我正在尝试使用 sed 命令来替换这一行:
charmm.c36a4.20140107.newcali4.fixhcali.grange.b
与:
charmm.20140911.c36a4.3rd.ghost2.model3rd
当我使用时:
sed -i '/s/firstline/secondline/g'
这是行不通的。我认为经期搞砸了。我该如何解决这个问题?
最佳答案
sed 使用正则表达式,所以 .
匹配任何字符。如果只想匹配 .
字符本身,请告诉 sed 查找 \.
所以把第一行改成第二行:
sed -e 's/charmm\.c36a4.20140107\.newcali4\.fixhcali\.grange\.b/charmm.20140911.c36a4.3rd.ghost2.model3rd/g' < filetochange >newfile
在这里,我添加了“g”以便它在全局范围内执行,即,如果同一行上有多个实例,所有实例都将被更改。如果您删除“g”,它只会更改每行中第一次出现的位置。
它从 filetochange
读取并写入 newfile
如果你这样做:
sed -i -e 's/charmm\.c36a4.20140107\.newcali4\.fixhcali\.grange\.b/charmm.20140911.c36a4.3rd.ghost2.model3rd/g' filetochange
它会直接在“filetochange”中进行更改...但是请小心,写得不好的 sed -i 可能会弄乱文件并使其无法使用
关于linux - 我在使用 Sed 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221883/