nev*_*int 4 unix linux awk sed
我在 2 个块中有以下几行(实际上有大约 10K)。在这个例子中,每个块包含 3 行。但实际上是 6 行。
xox
91-233
chicago
koko
121-111
alabama
Run Code Online (Sandbox Code Playgroud)
我想把它变成
xox 91-233 chicago
koko 121-111 alabama
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我试过了,tr "\n" "\t"但没有做我想做的。
$ awk -F'\n' '{$1=$1} 1' RS='\n\n' OFS='\t' file
xox 91-233 chicago
koko 121-111 alabama
Run Code Online (Sandbox Code Playgroud)
awk 将输入划分为记录,并将每个记录划分为字段。
-F'\n'
这告诉 awk 使用换行符作为字段分隔符。
$1=$1
这告诉 awk 将第一个字段分配给第一个字段。虽然这看起来什么都不做,但它会导致 awk 将记录视为已更改。因此,使用我们为 分配的值(ORS输出记录分隔符)打印输出。
1
这是 awk 用于打印该行的神秘简写。
RS='\n\n'
这告诉 awk 将两个连续的换行符视为记录分隔符。
OFS='\t'
这告诉 awk 使用制表符作为输出的字段分隔符。