我尝试使用 sed 更改名为 fusion.gnu 的文件中的一行
我有一个名为lafila
,这是一个文件名
目前,我可以这样做:
lafila="nGas060.dat"
sed -i "6s/.*/plot \"$lafila\" using 1:2 with l/" convergence.gnu
这会将我的 fusion.gnu 文件的第六行正确更改为:
plot "nGas062.dat" using 1:2 with l
但是,现在我想在替换行中包含一个美元符号来获取:
plot "nGas062.dat" using ($1/1000):2 with l
你能告诉我 sed 命令需要改变什么吗?如果我逃避美元符号,它就无法正常工作。双元也行不通。
我相信你的问题实际上是由正斜杠引起的($1/1000)
,它与用于分隔 sed 命令各个组件的斜杠发生冲突。您也需要转义该正斜杠,或者使用不同的字符来分隔 sed 字符串。以下任一方法都应该有效:
lafila="nGas060.dat"
sed -i "6s/.*/plot \"$lafila\" using (\$1\/1000):2 with l/" convergence.gnu
or
lafila="nGas060.dat"
sed -i "6s,.*,plot \"$lafila\" using (\$1/1000):2 with l," convergence.gnu
使用不同的定界字符可能是使 sed 字符串看起来更整洁并避免牙签倾斜综合征.
echo foo | sed "s,foo,/there/are/a/lot/of/slashes/here,"
比
echo foo | sed "s/foo/\/there\/are\/a\/lot\/of\/slashes\/here/"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)