- 论坛徽章:
- 0
|
a.txt
1 2903
2 2903
3 2903
4 2903
1 21180
3 21180
4 21180
6 21180
3 27892
4 27892
想根据第二列将文件合并成这样:
b.txt:
1 2903|2 2903|3 2903|4 2903
1 21180|3 21180|4 21180|6 21180
3 27892|4 27892
我自己用的最笨的方法是这样的:
#第二列不同则插入空行
awk -vFPAT=' [a-z]+' 'a&&$2!~a{print b}{a=$2} a.txt >2.txt
#将空行替换成逗号
sed ':a;N;$!ba;s/\n\n/,/g' 2.txt >3.txt
#将换行符替换成|
sed ':a;N;$!ba;s/\r\n/\|/g' 3.txt >4.txt
#将逗号替换成换行符
cat 4.txt|tr "," "\n" >5.txt
本人菜鸟一枚,求高手赐教,如果得到另外一种结果(按行合并)实在不知怎么做:
c.txt
1 2903 1 21180 3 27892
2 2903 3 21180 4 27892
3 2903 4 21180
4 2903 6 21180
|
|