您能帮我解决一下如何将每个4行序列转换为一个以制表符分隔的列吗?
转换:
A
1
2
3
3
3
4
1
到:
A 1 2 3
3 3 4 1
答案 0 :(得分:8)
一种简单的方法是使用xargs
:
$ xargs -n4 < file
A 1 2 3
3 3 4 1
使用awk
,您可以:
$ awk '{printf "%s%s",$0,(NR%4?FS:RS)}' file
A 1 2 3
3 3 4 1
另一种灵活的方法是使用pr
:
$ pr -tas' ' --columns 4 file
A 1 2 3
3 3 4 1
可以轻松修改awk
和pr
解决方案,将输出分隔符更改为TAB
:
$ pr -at --columns 4 file
A 1 2 3
3 3 4 1
$ awk '{printf "%s%s",$0,(NR%4?OFS:RS)}' OFS='\t' file
A 1 2 3
3 3 4 1
答案 1 :(得分:3)
$ perl -pe 's{\n$}{\t} if $. % 4' old.file > new.file
或简单地(感谢mpapec的评论):
$ perl -pe 'tr_\n_\t_ if $. % 4' old.file > new.file