-1

我运行这个命令:

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

4

2 回答 2

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
于 2013-11-07T17:34:18.247 回答
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
于 2013-11-07T19:23:42.347 回答