下面是shell脚本,我试图找到它的含义。

sed 's/19984 $/98400 /' | sed 's/19992 $/99200 /'

我预计19984$将被98400替换,此字符串将传递给下一个sed命令,该命令将19992$替换为99200。
但是当我用示例输入执行下面的脚本时
echo "19984 $ need to be  replaced with 98400  "| sed 's/19984 $/98400 /' | sed 's/19992 $/99200 /'

我得到同样的绳子
"19984 $ need to be  replaced with 98400"

我希望这里少了点什么。请帮帮我。我不熟悉shell脚本。
提前谢谢!

最佳答案

对于sed,$是一个保留字符,您必须转义它(\$)才能正确解析:

$ echo "19984 $ need to be  replaced with 98400  "| sed 's/19984 \$/98400 /'
98400  need to be  replaced with 98400

一起:
$ echo "19984 $ need to be  replaced with 98400  "| sed 's/19984 \$/98400 /' | sed 's/19992 \$/99200 /'
98400  need to be  replaced with 98400

所以你得保持原样。
$可能意味着很多事情:
-正常的性格
-行尾。
-变量的名称。
你得到代码的方式意味着第二种情况:行尾:
$ echo "19984 " | sed 's/19984 $/98400 /'
98400
$ echo "19984 something" | sed 's/19984 $/98400 /'
19984 something

因此sed将只匹配行以19984结尾的情况。否则就不匹配了。

10-08 03:00