sed 命令不用换行符替换文本

sed 命令不用换行符替换文本

Unix sed 命令无法将转义的 n 反斜杠识别\n为换行符。例如,该命令sed "s!,!\n!g"将输入​​文本中的逗号替换为字母 n 而不是换行符。

如何使 sed 解释\n为换行符?

答案1

如果您使用的是bash,则可以通过按 Enter 键插入换行符,如下所示

sed 's!,!\
!g'

答案2

sed "s/,/\n/g"在 bash 中在这里工作

答案3

Mac 版本的 sed 有这个困难。尝试安装 GNU 版本的 sed,brew install coreutils然后

gsed "s/,/\\n/g"

应该管用。或者,tr ',' \\n如果搜索字符串只有一个字符,则应该可以工作。

答案4

事实上,Unix Echo + Sed 并不总是将 \n 处理为换行符。我通过提供回车符 ASCII 0xd 和垂直制表符 ASCII 0xb 来解决这个问题。

例如,使用变量使用 sed 命令添加新行字符:

eol="\xd\xb"
echo -e "hello" | sed "s/$/$eol/"

相关内容