我正在尝试使用sed命令替换此行:
charmm.c36a4.20140107.newcali4.fixhcali.grange.b
使用:
charmm.20140911.c36a4.3rd.ghost2.model3rd
当我使用时:
sed -i '/s/firstline/secondline/g'
它不起作用。我认为这段时间搞得一团糟。我该如何解决这个问题?
答案 0 :(得分:2)
sed使用正则表达式,因此.
匹配任何字符。如果您只想匹配.
字符本身,请告诉sed查找\.
所以要将第一行改为第二行:
sed -e 's/charmm\.c36a4.20140107\.newcali4\.fixhcali\.grange\.b/charmm.20140911.c36a4.3rd.ghost2.model3rd/g' < filetochange >newfile
在这里,我添加了&#34; g&#34;所以它是全局的,也就是说,如果在同一行上有多个实例,则所有实例都将被更改。如果你删除&#34; g&#34;,它只会改变每一行的第一次出现。
它从filetochange
读取并写入newfile
如果你这样做:
sed -i -e 's/charmm\.c36a4.20140107\.newcali4\.fixhcali\.grange\.b/charmm.20140911.c36a4.3rd.ghost2.model3rd/g' filetochange
它将直接在&#34; filetochange&#34;中进行更改。 ...但是请小心,写得不好的sed -i会弄乱文件并使其无法使用
答案 1 :(得分:-1)
s
命令遵循以下语法:
s/pattern/replacement/
您需要将/
放在sed
命令前面。