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)}
(未测试,但关闭)。。。。祝大家好运。