Dan*_*s W 1 sed text-processing
我正在研究这个解决方案:使用 sed 编辑带有变量的文件中的行并尝试将其应用于我的情况,但我最近才发现sed
并且还没有掌握它。
如果我有一个文件/tmp/mary.txt
,它看起来像这样:
Mary had a little lamb
with fleece as white as
snow. Everywhere that
Mary went, the lamb was
sure to go.
Run Code Online (Sandbox Code Playgroud)
我想替换此文件中的一行文本,特别是:
Mary had a little lamb
-> Mary had 2 little lambs
我用过这个:
sed -i 's/*.had a little lamb.*/Mary had $(nproc) little lambs/' /etc/mary.txt
Run Code Online (Sandbox Code Playgroud)
我使用-i
的就地和s/
对替代品,它抛出错误:
sed: 1: "mary.txt": extra characters at the end of g command
Run Code Online (Sandbox Code Playgroud)
我想做的另一件事是用结果替换第一行中的“lamb”一词 echo $PATH
sed -i 's/*.had a little lamb.*/ Mary had a little '$(echo $PATH)'/' /etc/mary.txt
Run Code Online (Sandbox Code Playgroud)
这会引发与上述相同的错误。我知道这是两种不同的场景,但是可以向我展示我做错了什么,以便我将来可以使用它。
使用双引号正确评估 var:
$ var=43
$ sed "s/.*had a little lamb.*/Mary had $var little lambs/" file
Mary had 43 little lambs
with fleece as white as
snow. Everywhere that
Mary went, the lamb was
sure to go.
Run Code Online (Sandbox Code Playgroud)
请参阅Jacob Minshall对.*
代替的回答*.
。sed
命令是我从头开始写的,所以没有注意到原代码中的错误。