何百もの$
。
$ 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
金利