组合两个sed命令
我有一个文件组合两个sed命令,sed,Sed,我有一个文件r。我想将其中的单词File和MINvac.pdb替换为空。我使用的命令是 sed -i 's/File//g' /home/kanika/standard_minimizer_prosee/r 及 我想将两个sed命令合并为一个命令,但我不知道该怎么做。有人能帮忙吗 该文件如下所示: -6174.27 File10MINvac.pdb -514.451 File11MINvac.pdb 4065.68 File12MINvac.pdb -4708.64
r
。我想将其中的单词File
和MINvac.pdb
替换为空。我使用的命令是
sed -i 's/File//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 -i -f sedcommands /home/kanika/standard_minimizer_prosee/r
sed
是一种脚本语言。可以使用分号或换行符分隔命令。许多sed
方言还允许您将每个命令作为单独的-e
选项参数传递
sed -i 's/File//g;s/MINvac\.pdb//g' /home/kanika/standard_minimizer_prosee/r
我还在pdb
之前添加了一个反斜杠来正确引用文字点,但在这个有限的上下文中,这可能并不重要
为了完整起见,这里是换行符变体。许多新来者对shell允许在带引号的字符串中使用文字换行感到困惑,但它很方便
sed -i 's/File//g
s/MINvac\.pdb//g' /home/kanika/standard_minimizer_prosee/r
当然,在这种有限的情况下,您也可以将所有内容合并到一个正则表达式中:
sed -i 's/\(File\|MINvac\.pdb\)//g' /home/kanika/standard_minimizer_prosee/r
(一些
sed
方言希望不使用反斜杠,并且/或者提供了一个使用扩展正则表达式的选项,应该省略它们。BSDsed
,因此也包括MacOSsed
,要求对sed-i
使用一个强制参数,但该参数可以是空的,比如sed-i'.
)使用-e
标志:
sed -i -e 's/File//g' -e 's/MINvac.pdb//g' /home/kanika/standard_minimizer_prosee/r
一旦获得的命令超过了使用-e
s方便定义的数量,最好将命令存储在单独的文件中,并将其包含在-f
标志中
在本例中,您将创建一个包含以下内容的文件:
s/File//g
s/MINvac.pdb//g
让我们将该文件称为“sedcommands”。然后将其与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 -i -f sedcommands /home/kanika/standard_minimizer_prosee/r
由于只有两个命令,可能不值得使用单独的命令文件,但如果要进行大量转换,则使用起来非常方便 f旗背后的想法是什么?他当然想解释一下。使用
-f
可以将脚本放在文件中,而不是放在sed
命令行中。(在本例中,它可能不是很有用。)感谢您提供关于使用多个-e标志的提示,脚本中的每个语句都有一个-e标志。为'i'命令使用单独的-e标志是一种很好的方法,可以确保在编写一行sed脚本时终止'i'命令。另请参见将其扩展到处理替换对列表的操作。