用 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

e

相关内容