下面是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
结尾的情况。否则就不匹配了。