我想在一个可移植的 sed 命令中执行多次插入/追加。
在 GNU sed 中,我可以做类似的事情:
sed -e '1i hi' -e '$a bye' <(seq 1 10)
我发现了以下作品,但我不确定这是否是在 Posix 兼容的 sed 中处理它的正确/最佳方法:
sed --posix '1{x;s/$/hi/;G};//h;${x;s/$/\nbye/}' <(seq 1 10)
--或--
sed --posix '1{x;s/$/hi/;G};${s/$/\nbye/}' <(seq 1 10)
我还没有看到有人真正讨论过如何删除保留空间,我猜测一下 - 这是在所有 posix 兼容的 sed 中实现此目的的最佳方法吗?
第一个命令中的 GNU 主义是
i
和 a
接受要在同一行上插入的行,而 POSIX 要求它们位于不同的行上。这应该符合:
sed --posix -e '1i \
hi' -e '$a \
bye' <(seq 1 10)