如何在shell脚本中获得以下结果?
This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
...
...
Run Code Online (Sandbox Code Playgroud)
期望的输出:
This is line 1 This is line 2 This is line 3
This is line 4 This is line 5 This is line 6
This is line 7 This is line 8 This is line 9
... ... ....
... ... ...
Run Code Online (Sandbox Code Playgroud)
awk
是你的朋友:
$ awk 'ORS=NR%3?FS:RS' file
This is line 1 This is line 2 This is line 3
This is line 4 This is line 5 This is line 6
This is line 7 This is line 8 This is line 9
Run Code Online (Sandbox Code Playgroud)
这与以下相同:
$ awk 'ORS=NR%3 ? " " : "\n"' file
This is line 1 This is line 2 This is line 3
This is line 4 This is line 5 This is line 6
This is line 7 This is line 8 This is line 9
Run Code Online (Sandbox Code Playgroud)
如果记录数不是3的倍数,则将输出记录分隔符设置为空格; 否则,作为新线.
ORS
定义输出记录分隔符.NR
定义记录的数量(在这种情况下为行).FS
定义字段分隔符.默认为" "
(空格).RS
定义记录分隔符.默认为"\n"
(新行).更多信息和相关的例子在Idiomatic awk.