我有一个sed替换命令,希望与BSD sed
以及GNU 兼容sed
。扩展正则表达式不是问题,因为在这种情况下,我不需要它们。我的主要问题是两个sed
s解释替换字符串中字符转义序列的方式不同。我的替换字符串包含制表符和换行符,并且我希望它们在命令字符串中可见以便于维护,但是BSD sed
不会解释转义序列,而GNU sed
会解释。有什么合适的方法来指示sed
在BSD上解释这些转义序列?以下两个片段概括了我的问题:
GNU sed
echo ABC | sed 's/B/\n\tB\n'
产量
A
B
C
BSD sed
echo ABC | sed 's/B\n\tB\n'
产量
AntBnC
显然,\n
和\t
不会被解释为通过BSD转义序列sed
现在,我的问题。根据BSD手册sed
:
要在替换字符串中指定换行符,请在其前面加上反斜杠。
这是否意味着我需要在文字换行符之前加反斜杠?有什么合适的方法来指示sed
解释\n
替换文本中的转义序列?
sed
。最后,使用awk可能会有意义。那么,您如何看待我引用的BSD sed手册页的解释?