如何用单条POSIX兼容sed命令实现多插入/追加操作
可移植的POSIX sed多插入/追加命令实现
核心需求:用一条可移植的sed命令完成多插入/追加操作
GNU sed的简洁实现:
在GNU sed环境下,借助多个-e参数就能快速实现需求,示例命令:sed -e '1i hi' -e '$a bye' <(seq 1 10)POSIX兼容方案的尝试:
为适配POSIX标准的sed,试过几种可行写法,但存在移植性缺陷:sed --posix '1{x;s/$/hi/;G};//h;${x;s/$/ bye/}' <(seq 1 10)sed --posix '1{x;s/$/hi/;G};${s/$/ bye/}' <(seq 1 10)以上写法中直接嵌入的换行符不具备可移植性,无法在不同环境下稳定运行。
最终选定的单行可移植方案:
尝试过多行写法、捕获换行符等方式后,最终采用基于参数扩展的单行实现(参考Potong的方案):sed --posix $'1i\\hi\n;$a\\bye' <(seq 1 10)该方案既符合POSIX标准,又能以单行命令形式完成多插入/追加需求。
内容的提问来源于stack exchange,提问作者Adam D.
相关产品推荐
相关产品推荐

