$ cat text.txt
my name is Steven
my age is 10
i like dogs
どのコマンドがより適切で置き換えられecho "Kate"
ますか?Steven
text.txt
答え1
必ず次のようにecho "Kate"
使用する必要がある場合awk
:
echo "Kate" | awk 'NR==FNR{a=$0;next} sub("Steven", a, $0)1' - file
- 標準入力
Kate
はから来てにecho "Kate"
パイプされますawk
。 awk
次に標準入力(-
)を読みます。NR==FNR
最初のファイルが処理されている間(stdin)条件はtrueです。変数はa
この値に設定されます。file
その後、入力が処理され、値にsub()
置き換えられます。Steven
a
- これは
sub()1
ステートメントのパターンであり、置換が発生したかどうかにかかわらず常に true を返します。同等のアクションがないため、{ print }
交換後に各行が印刷されます。
しかし、より良い方法はを使用することですsed
。
sed 's/Steven/Kate/' file
ファイルを適切に変更するには、次のようにします。
sed -i 's/Steven/Kate/' file