我有一个包含数百个以$
.
$ 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