我有一个sed替换命令,希望与BSD sed以及GNU 兼容sed。扩展正则表达式不是问题,因为在这种情况下,我不需要它们。我的主要问题是两个seds解释替换字符串中字符转义序列的方式不同。我的替换字符串包含制表符和换行符,并且我希望它们在命令字符串中可见以便于维护,但是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手册页的解释?