特定の値をsedに置き換える

特定の値をsedに置き換える

何百もの$

$ cat /tmp/file

$one $t $three
$one $t $three $t $three

sedで始まる値のみを変更しようとします$t

$ sed "s/\$t/foo/g" /tmp/file

$one foo foohree
$one foo foohree foo foohree

ただし、上記のコマンドは$threeこれらの値も置き換えます。これが起こらないようにするにはどうすればよいですか?

答え1

努力する:

sed "s/\$t\>/foo/g" /tmp/file

\>単語の終わりの正規表現パターンの一致。

答え2

以下のsedコマンドとawkコマンドを試してください。

 awk '{for(i=1;i<=NF;i++){if($i =="$t"){gsub(/\$t/,"foo",$i)}}}1'  filename

sed コマンド

sed "s/\$t /foo /g" filename

出力

$one foo $three
$one foo $three foo $thre

金利

関連情報