使用多个 sed 命令进行文本操作

使用多个 sed 命令进行文本操作

我有一个 bash 文件,我想在其中进行一些更改。

sed -i 's/      /    /g' testfile
sed -i -e 's/#[a-z]$//' -e '/^$/d' testfile
sed -i 's/ *$//' testfile
sed '/##=/ r header' testfile

在第一个命令中,想用空格替换 TAB ,然后删除注释(还有以 ## 开头的注释)和空行。之后想在我的文件中的指定模式之后插入一个文件。命令顺序有问题吗?

答案1

您可以在一次 sed 中给出多个指令,例如:

sed 's/\t/    /g;/^ *$/d;s/^#/NODIESE/' testfile

这一行

  1. 将制表符替换为空格
  2. 删除以空内容开头的行(或空行)
  3. 将开头处的 Dash 替换为 NODIESE

因此您的测试文件仅被处理一次,并且您仅启动 sed 一次。

相关内容