Oni*_*uka 1 unix linux bash awk text-processing
我有一个文件,其中包含多行标签分隔数据,格式如下:
1 1 2 2
3 3 4 4
5 5 6 6
...
Run Code Online (Sandbox Code Playgroud)
我想将格式更改为:
1 1
2 2
3 3
4 4
5 5
6 6
Run Code Online (Sandbox Code Playgroud)
有没有太复杂的方法来做到这一点?我没有任何使用awk,sed等的经验.谢谢
如果您只想将文件分组为X列,则可以使用xargs -nX:
$ xargs -n2 < file
1 1
2 2
3 3
4 4
5 5
6 6
Run Code Online (Sandbox Code Playgroud)
要获得更多控制并在第4个字段后打印空行,您还可以使用此awk:
$ awk 'BEGIN{FS=OFS="\t"} {for (i=1;i<=NF;i++) printf "%s%s", $i, (i%2?OFS:RS); print ""}' file
1 1
2 2
3 3
4 4
5 5
6 6
# <-- note there is an empty line here
Run Code Online (Sandbox Code Playgroud)
BEGIN块中重新定义它.小智 6
这可能是允许自定义的最简单方法
awk '{print $1,$2"\n"$3,$4}' file
Run Code Online (Sandbox Code Playgroud)
对于之间的界限
awk '{print $1,$2"\n"$3,$4"\n"}' file
Run Code Online (Sandbox Code Playgroud)
虽然如果不需要,fedorquis答案xargs可能是最简单的
正如所Ed指出的那样,如果字段中有空白,这将无法解决,这可以通过使用来解决
awk 'BEGIN{FS=OFS="\t"} {print $1,$2 ORS $3,$4 ORS}' file
Run Code Online (Sandbox Code Playgroud)