Unixファイルの1行に文字列「ny」が見つかった場合は、文字列「xy」を別の文字列「ab」に置き換えたいと思います。
テキスト例:
If we have xy today we can go to ny.
If we have xy tomorrow we can go to ny tomorrow.
If we have mn now we can go to ny now.
出力テキストは次のようにする必要があります。
If we have ab today we can go to ny.
If we have ab tomorrow we can go to ny tomorrow.
If we have mn now we can go to ny now.
答え1
sed
おそらく最も簡単な方法は次のとおりです。
sed '/ny/s/xy/ab/g' file
/ny/
これには、パターンを検索してs/xy/ab/g
実際の置換を実行する2つのサブコマンドが含まれています。これはすべての項目を置き換えることに注意してくださいxy
。各行の最初の項目のみを置き換えるには、最後の項目のみを削除してくださいg
。
答え2
正解はawk
:
awk '/ny/ {gsub(/xy/,"ab")}; {print}' test.txt
説明する
/ny/
ny
:オンライン状態でのみ次のコマンドを実行します。gsub(/xy/,"ab")
:はこの行で/xy/
のみ置き換えられますab
。{print}
:どの行に関係なく、その行を印刷します。