我正在尝试使用 Linux 中的 sed 命令编辑大型文本文件中的一行。
我的 file.txt 中的原始行是:
Cg64_2043 XI1.MM1.GATE vss '0.0'
我本质上想将行中的 0.0 更改为 10。问题是行本身中有一个 ' ,它似乎发送 sed 命令。有没有解决的办法?谢谢!
sed -i '/Cg64_2043 XI1.MM1.GATE vss '0.0'/s/0.0/10/' file.txt
答案1
只需使用双引号即可。
sed -i "/Cg64_2043 XI1\.MM1\.GATE vss '0\.0'/s/0\.0/10/" file.txt
首先检查匹配然后替换是没有意义的,只需替换即可。它不会做任何不匹配的事情:
sed -i "s/\(Cg64_2043 XI1\.MM1\.GATE vss \)'0\.0'/\1'10'/" file.txt
或者,如果您的 sed 支持-E
(大多数支持):
sed -E -i "s/(Cg64_2043 XI1\.MM1\.GATE vss )'0\.0'/\1'10'/" file.txt