我运行此命令:
awk '/diameter/ {f=NR} f && f+3==NR {a=a?a$0:$0} f && f+4==NR {b=b?b$0:$0} END {print a"\n"b}' file > output
输出(我想要更改的文件):
5 um
1406 849
1105 1333
619 1932
1885 124
571 374
145 644
1487 1793
64 255 0 0
1364 882
1082 1369
580 1953
1886 124
536 392
126 659
1488 1793
但我希望它看起来像这样(一半行移到第2列)。
1406 849 1364 882
1105 1333 1082 1369
619 1932 580 1953
1885 124 1886 124
571 374 536 392
145 644 126 659
1487 1793 1488 1793
一列应包含两个数字。我还想删除“5 um 64 255 0 0
”
答案 0 :(得分:1)
pr
是你做朋友的朋友:
(忽略标题column1 column2
):
pr -2t -s' ' file|grep -v '[^0-9 \t]'
用你的例子测试:
kent$ cat f
5 um
1406 849
1105 1333
619 1932
1885 124
571 374
145 644
1487 1793
64 255 0 0
1364 882
1082 1369
580 1953
1886 124
536 392
126 659
1488 1793
kent$ pr -2t -s' ' f|grep -v '[^0-9 \t]'
1406 849 1364 882
1105 1333 1082 1369
619 1932 580 1953
1885 124 1886 124
571 374 536 392
145 644 126 659
1487 1793 1488 1793
答案 1 :(得分:0)
这样的事情应该算法(bash
代码,假设你的输入在file.txt
):
(( nlines = $(wc -l < file.txt) / 2 ))
split -l ${nlines} -d -a 1 file.txt foo
paste foo0 foo1 > output.txt
rm foo0 foo1