Regex 在一行中执行多个sed命令

Regex 在一行中执行多个sed命令,regex,bash,sed,terminal,Regex,Bash,Sed,Terminal,这里是终端新手。我有一个包含许多不同字符串的长文本文件。我需要将它们全部更改为短代码,如下所示: s/string 1/ABC/g s/string 2/LMN/g s/string 3/XYZ/g 字符串1应更改为ABC 字符串2应更改为LMN 字符串3应更改为XYZ 等等。我知道如何使用基本的sed命令一次更改其中一个。我知道我可以通过管道将一个sed命令传递给另一个。但是,我需要更改大约1000个字符串。肯定有比1000根管子更好的方法吗 谢谢 一种方法是对sed使用多个s命令: sed

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

s/string 1/ABC/g
s/string 2/LMN/g
s/string 3/XYZ/g
字符串1
应更改为
ABC

字符串2
应更改为
LMN

字符串3
应更改为
XYZ

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


谢谢

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

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

尽管大多数人只在“一行程序”中使用sed,但sed是一种(用途有限的)脚本语言,可以用于更复杂的内容。因此,它允许您将sed命令作为文件的输入。您要做的是创建一个文件,每行使用一个sed命令,如下所示:

s/string 1/ABC/g
s/string 2/LMN/g
s/string 3/XYZ/g
然后将其保存到一个文件中,比如'shortCodes.sed'

然后,在命令行上,您可以说

sed-f shortcode.sedoutputfile


注意:模式匹配末尾的
/g
指定了一个“全局”替换:因此,如果同一字符串在一行中出现多次,则每次都将替换它-您可能希望也可能不希望这样,取决于您的应用程序。

您也可以发布
sed
命令吗?如何将数据存储在需要更改为什么的字符串上?有格式选择吗?或者将sed命令写入文件并使用option
-f script file
@Cyrus是的,您是正确的。我考虑了文件输入,但是我不确定OP希望如何存储这些值。可能有一个比根据数据手动键入每个命令更简单的解决方案。@konsolebox@Cyrus我在电子表格中构建了代码,可以自动执行管道等的所有重复键入,但在我的经验中,将如此长的命令(数千个字符)粘贴到终端会使它陷入停顿。所以第一个答案对我来说更有效。不过,学习如何对
sed
命令进行分组非常有帮助-谢谢@杰克布兰宁不用担心。欢迎:)工作得很有魅力。非常感谢。