Sed

用 sed 替換特定值

  • August 16, 2020

我有一個包含數百個以$.

$ 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也替換了這些值。我怎樣才能防止這種情況?

嘗試:

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

\>是單詞結尾的正則表達式模式匹配。

嘗試使用以下 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

引用自:https://unix.stackexchange.com/questions/603440