连续执行许多sed命令

时间:2014-07-09 19:01:09

标签: regex bash sed terminal

终端新手在这里。我有一个包含许多不同字符串的长文本文件。我需要将所有这些更改为短代码,如下所示:

string 1应更改为ABC
string 2应更改为LMN string 3应更改为XYZ

等等。我知道如何使用基本sed命令一次更改其中一个。我知道我可以将一个sed命令传递给另一个命令。但是,我需要大约1000个字符串更改。当然,有比1000管道更好的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

一种方法是使用多个s命令和sed:

sed -e 's|string 1|ABC|' -e 's|string 2|LMN|' -e 's|string 3|XYZ|' your_file

或用分号分隔:

sed -e 's|string 1|ABC|; s|string 2|LMN|; s|string 3|XYZ|' your_file

答案 1 :(得分:0)

虽然大多数人只使用sed作为单行',但sed是一种(限制用途的)脚本语言,可用于更复杂的东西。因此,它允许您将sed命令作为文件的输入。你想要做的是创建一个每行有一个sed命令的文件,如下所示:

s/string 1/ABC/g
s/string 2/LMN/g
s/string 3/XYZ/g

然后将其保存到文件中,例如' shortCodes.sed'

然后,在命令行中,您说

  

sed -f shortCodes.sed< inputfile> OUTPUTFILE

注意:模式匹配结束时的/g指定全局'替换:这样,如果同一个字符串在一行中出现多次,则每次都会替换它 - 根据您的应用程序,您可能会也可能不想这样做。