sed 用于打印两个不同的单词



我需要在文件中的替代空格中打印两个不同的单词。

例如

ABCD
EFGH
IGKL
MNOP

在上面的场景中,我想要打印ab和/ab,如下所示:

ab
ABCD
/ab
ab
EFGH
/ab
ab
IGKL
/ab
ab
MNOP
/ab

*我想要一个一行的格式(不是水平格式(.*我知道这个命令几乎接近我的情况sed 's|^[[:blank:]]*$|</ab>|'。但我不知道如何应用它。拜托,有人,帮帮我。

with gnu sed

sed -e 'iab' -e 'a/ab' infile

这是如何工作的?

在每一行上

首先在前面插入 ab 并带有'iab'

下一个附加/ab 后与'a/ab'

您必须将 2 个单独的命令与'-e'一起使用才能执行此操作。

您不能使用sed 'iab;a/ab',因为第一个命令 i(插入(不知道要插入的文本在哪里结束并获取所有行。

因此,插入的文本ab;a/ab在每行之前。

使用所有 sed 执行此操作的另一种方法是

sed -e 'i
ab
a
/ab' infile

如果你对awk没问题,那么关注可能会在这里帮助你。

awk -v start="ab" -v end="/ab" '{print start ORS $0 ORS end}' Input_file

如果您需要将输出保存到Input_file本身中,请在上面的代码中也附加> temp_file && mv temp_file Input_file

最新更新