2016-04-27 35 views
0

我有具有两列数据如下 文件1的文件:格式化两个列中的数据为三个列数据

1 
13 
1860  
168 1488.1 
320 1566.5 
476 1625.2 
640 1684 
840 1762.3 
1092 1909.2 
1460 2075.6 
1824 2183.3 
2400 2291 
3260 2467.3 
4340 2682.7 
5468 2907.9 
8188 3309.3 
1 
13 
1940  
176 1503.1 
348 1497.9 
500 1586 
640 1684 
836 1821 
1076 1938.5 
1428 2075.6 
1824 2183.3 
2400 2291 
3260 2467.3 
4340 2682.7 
5468 2907.9 
8188 3309.3 

输出应该如所期望 输出:

1860 168 1488.1 
1860 320 1566.5 
1860 476 1625.2 
1860 640 1684 
1860 840 1762.3 
1860 1092 1909.2 
1860 1460 2075.6 
1860 1824 2183.3 
1860 2400 2291 
1860 3260 2467.3 
1860 4340 2682.7 
1860 5468 2907.9 
1860 8188 3309.3 
1940 176 1503.1 
1940 348 1497.9 
1940 500 1586 
1940 640 1684 
1940 836 1821 
1940 1076 1938.5 
1940 1428 2075.6 
1940 1824 2183.3 
1940 2400 2291 
1940 3260 2467.3 
1940 4340 2682.7 
1940 5468 2907.9 
1940 8188 3309.3 

回答

2

你可以用这个awk

awk 'NF==1{h=$1;next} {print h,$0}' file 

输出:

1860 168 1488.1 
1860 320 1566.5 
1860 476 1625.2 
1860 640 1684 
1860 840 1762.3 
1860 1092 1909.2 
1860 1460 2075.6 
1860 1824 2183.3 
1860 2400 2291 
1860 3260 2467.3 
1860 4340 2682.7 
1860 5468 2907.9 
1860 8188 3309.3 
1940 176 1503.1 
1940 348 1497.9 
1940 500 1586 
1940 640 1684 
1940 836 1821 
1940 1076 1938.5 
1940 1428 2075.6 
1940 1824 2183.3 
1940 2400 2291 
1940 3260 2467.3 
1940 4340 2682.7 
1940 5468 2907.9 
1940 8188 3309.3 
0
sed -rn ':a;/^[0-9]+[ \t]+$/h;/^[0-9]+[ \t]+[0-9]+/{!ba;G;s/(.*)\n(.*)/\2\1/;p}' file 
1860 168 1488.1 
1860 320 1566.5 
1860 476 1625.2 
1860 640 1684 
1860 840 1762.3 
1860 1092 1909.2 
1860 1460 2075.6 
1860 1824 2183.3 
1860 2400 2291 
1860 3260 2467.3 
1860 4340 2682.7 
1860 5468 2907.9 
1860 8188 3309.3 
1940 176 1503.1 
1940 348 1497.9 
1940 500 1586 
1940 640 1684 
1940 836 1821 
1940 1076 1938.5 
1940 1428 2075.6 
1940 1824 2183.3 
1940 2400 2291 
1940 3260 2467.3 
1940 4340 2682.7 
1940 5468 2907.9 
1940 8188 3309.3 
0

你可以试试这个:

$ awk -v prev='' 'NF==1{prev=$0;next}{$0=prev" "$0;print}' <filename> 

输出:

1860  168 1488.1 
1860  320 1566.5 
1860  476 1625.2 
1860  640 1684 
1860  840 1762.3 
1860  1092 1909.2 
1860  1460 2075.6 
1860  1824 2183.3 
1860  2400 2291 
1860  3260 2467.3 
1860  4340 2682.7 
1860  5468 2907.9 
1860  8188 3309.3 
1940  176 1503.1 
1940  348 1497.9 
1940  500 1586 
1940  640 1684 
1940  836 1821 
1940  1076 1938.5 
1940  1428 2075.6 
1940  1824 2183.3 
1940  2400 2291 
1940  3260 2467.3 
1940  4340 2682.7 
1940  5468 2907.9 
1940  8188 3309.3 
+0

感谢您对您的支持 –

+0

这个代码为例子只是工作,我如果表间隔不同,它已经给出它不工作。请帮我 –

+0

@SriramGullapalli - 你能告诉我你的文件的内容吗? – Ren

相关问题