[英]Sed command giving unexpected result
下面是我试图找到含义的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
结尾的情况。 否则,它将不匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.