Linuxシェルでテキストの検索と置換を行うために便利なコマンドを紹介します。これらのコマンドを使って、ファイル内の特定のパターンを検索したり、文字列を置換したりする方法を学びましょう。
1. grep: ファイル内のパターン検索
grep
コマンドは、テキストファイル内で特定のパターン(文字列や正規表現)を検索します。
grep "pattern" file.txt
このコマンドは、file.txt
内で「pattern」という文字列を含む行を検索します。
2. sed: テキストの置換と加工
sed
コマンドは、テキストファイル内の特定の文字列を置換したり、加工したりするのに便利です。
sed -i 's/old/new/g' file.txt
このコマンドは、file.txt
内のすべての「old」を「new」に置換します。
3. awk: テキストデータの処理と抽出
awk
コマンドは、テキストファイルを行単位で処理して、データの抽出や加工を行うのに役立ちます。
awk '{print $1}' file.txt
このコマンドは、file.txt
の各行の1列目を抽出して表示します。
4. find + xargs: ファイルの検索と操作
find
コマンドとxargs
コマンドを組み合わせることで、特定の条件に一致するファイルを検索して操作することができます。
find . -type f -name "*.txt" | xargs sed -i 's/old/new/g'
この例では、カレントディレクトリ以下のすべての.txt
ファイル内で「old」を「new」に置換します。
5. ack/ag: プロジェクト全体の検索
ack
またはag
コマンドは、大規模なソースコードプロジェクトなどで高速な検索を行うのに最適です。
ack "pattern" /path/to/project
このコマンドは、/path/to/project
内で「pattern」という文字列を含むファイルを検索します。
6. grep + cut + sed: テキストの抽出と加工
複数のコマンドをパイプラインでつなげることで、より複雑なテキスト処理を行うことができます。
grep "pattern" file.txt | cut -d':' -f2 | sed 's/^ *//'
この例では、file.txt
内で「pattern」という文字列を含む行を検索し、その行から2番目のフィールドを取り出して前後の空白を削除します。
7. replace: ファイル内の文字列置換
replace
コマンドは、ファイル内の特定の文字列を置換するのに使われます。
replace "old" "new" -- file.txt
このコマンドは、file.txt
内のすべての「old」を「new」に置換します。
8. perl -pi -e: ファイル内の正規表現による置換
Perlの-pi -e
オプションを使用して、ファイル内で正規表現に一致する文字列を置換することができます。
perl -pi -e 's/old/new/g' file.txt
このコマンドは、file.txt
内のすべての「old」を「new」に置換します。
9. awk + sed: 複雑なテキスト処理
awk
とsed
を組み合わせることで、より複雑なテキスト処理を行うことができます。
awk '{print $1, $3}' file.txt | sed 's/ /,/g'
この例では、file.txt
の各行から1番目と3番目のフィールドを取り出し、それらをコンマで区切った形式で表示します。
10. ag -l | xargs sed -i ‘s/old/new/g’: プロジェクト全体の置換
プロジェクト全体で特定の文字列を置換するために、ag
とxargs
、そしてsed
を組み合わせることができます。
ag -l "pattern" /path/to/project | xargs sed -i 's/old/new/g'
このコマンドは、/path/to/project
内で「pattern」という文字列を含むファイルを検索し、そのファイル内で「old」を「new」に置換します。
これらのLinuxコマンドを使って、さまざまなテキスト処理のニーズに対応しましょう。各コマンドのオプションやパイプラインの組み合わせを試して、作業効率を向上させる方法を見つけてください。
コメント