Macos OSX终端:tr:如何添加多个回车符?

Macos OSX终端:tr:如何添加多个回车符?,macos,terminal,newline,carriage-return,tr,Macos,Terminal,Newline,Carriage Return,Tr,我有一个格式如下的文件: > ABC 1 2 > DEF 3 4 ABC 1 2 DEF 3 4 我想使用tr将每个替换为4个回车符,因此看起来像: ABC 1 2 DEF 3 4 我在终端中尝试了以下操作:cat输入| tr“>”\n\n\n“>输出 但是,这仅在两个数据块之间添加一个回车符,如下所示: > ABC 1 2 > DEF 3 4 ABC 1 2 DEF 3 4 如何让它识别多个回车符?谢谢 tl;dr tr是工作的错误工具

我有一个格式如下的文件:

> ABC
1
2
> DEF
3
4
 ABC
1
2

 DEF
3
4
我想使用tr将每个
替换为4个回车符,因此看起来像:

 ABC
1
2




 DEF
3
4
我在终端中尝试了以下操作:
cat输入| tr“>”\n\n\n“>输出
但是,这仅在两个数据块之间添加一个回车符,如下所示:

> ABC
1
2
> DEF
3
4
 ABC
1
2

 DEF
3
4
如何让它识别多个回车符?谢谢

tl;dr

tr是工作的错误工具;尝试其他方法(如sed)


tr(文本替换)只进行1:1替换-因此它一次只能用另一个字符替换一个字符。我认为您当前的命令将>替换为/n,>>替换为/n/n,>>>>替换为/n/n/n,>>>>替换为/n/n/n

尝试改用sed,可能是这样(未经测试!):


在unix格式的文本文件(您似乎正在处理)中,换行符由换行符(也称为换行符或
/n
^J
)表示,而不是回车符(
\r
^M
)。OSX版本的
sed
不会像
\n
那样解释转义序列,但是您可以使用
$“…”
让shell在将它们交给
sed
之前对它们进行解释。然后,你必须逃离这些换行符以保持sed的快乐,并逃离这些换行符以使shell通过它们。。。它最终看起来是这样的:
sed$'s/>/\\\n\\\n\\\n\\\n/g'input>output
yes或在awk中使用等价物,它确实理解
\n
字符,即
cat input | awk'{printf(%s\n\n\n\n,$0)}
(未测试,但关闭)。。。。祝大家好运。