结合2个sed命令

我有一个文件r 。 我想用MINvac.pdbreplaceFileMINvac.pdb中的文字。 我用的命令是:

 sed -i 's/File//g' /home/kanika/standard_minimizer_prosee/r 

 sed -i 's/MINvac.pdb//g' /home/kanika/standard_minimizer_prosee/r 

我想把两个sed命令合并成一个,但我不知道。 谁能帮忙?

该文件如下所示:

 -6174.27 File10MINvac.pdb -514.451 File11MINvac.pdb 4065.68 File12MINvac.pdb -4708.64 File13MINvac.pdb 6674.54 File14MINvac.pdb 8563.58 File15MINvac.pdb 

sed是一种脚本语言。 用分号或换行符分隔命令。 许多sed方言还允许您将每个命令作为单独的-e选项parameter passing。

 sed -i 's/File//g;s/MINvac\.pdb//g' /home/kanika/standard_minimizer_prosee/r 

我还添加了一个反斜杠来正确引用pdb之前的字面点,但是在这个有限的上下文中可能是不重要的。

为了完整性,这里是换行符。 很多新手都很困惑,shell允许在string中换行,但是可以方便。

 sed -i 's/File//g s/MINvac\.pdb//g' /home/kanika/standard_minimizer_prosee/r 

当然,在这个有限的情况下,你也可以把所有的东西合并成一个正则expression式:

 sed -i 's/\(File\|MINvac\.pdb\)//g' /home/kanika/standard_minimizer_prosee/r 

(有些方言不需要反斜杠,并且/或者提供一个选项来使用扩展的正则expression式,在这里它们应该被省略)。

使用-e标志:

 sed -i -e 's/File//g' -e 's/MINvac.pdb//g' /home/kanika/standard_minimizer_prosee/r 

一旦获得了比使用-e s定义方便的更多的命令,最好将命令存储在单独的文件中,并将其与-f标志一起包含。

在这种情况下,您将创build一个文件,其中包含:

 s/File//g s/MINvac.pdb//g 

我们来调用那个文件'sedcommands'。 然后你可以像这样使用sed:

 sed -i -f sedcommands /home/kanika/standard_minimizer_prosee/r 

只有两个命令,可能不需要使用单独的命令文件,但是如果要进行很多转换,则非常方便。