用制表符替换所有换行符

注意:为简便起见,这些命令使用 here-strings(<<<ANSI C 引用的字符串($'...' 。这两个 shell 功能都适用于 bashkshzsh

# GNU Sed
$ sed ':a;$!{N;ba}; s/\n/\t/g' <<<$'line_1\nline_2\nline_3'
line_1 line_2 line_3

# BSD Sed equivalent (multi-line form)
sed <<<$'line_1\nline_2\nline_3' '
:a
$!{N;ba
}; s/\n/'$'\t''/g'

# BSD Sed equivalent (single-line form, via separate -e options)
sed -e ':a' -e '$!{N;ba' -e '}; s/\n/'$'\t''/g' <<<$'line 1\nline 2\nline 3'

BSD Sed 注意到:

  • 请注意,需要使用实际换行符或单独的 -e 选项终止标签(:a)和分支命令(ba)。

  • 由于替换字符串中不支持控制字符转义序列(如\t),因此 ANSI C 引用的选项卡文字将拼接到替换字符串中。
    (在正则表达式部分,BSD Sed \n 识别为转义序列)。