标签:awk 记录
请使用awk命令将如下两份文件中名字相同的两行合并起来 A文件: 孙行者 50岁 行者孙 500岁 者行孙 5000岁 孙者行 50000岁 B文件: 行者孙 男 者行孙 男 孙行者 男 孙者行 男 输出效果: 孙行者 50岁 男
[root@localhost ~]$ cat a b |sort -k1 |awk ‘BEGIN{t=""}{t=$1;if(tt==t){printf("%s",$2);printf("\n")}else{printf("%s %s ",$1,$2);}tt=t}‘ 孙者行 50000岁 男 孙行者 50岁 男 者行孙 5000岁 男 行者孙 500岁 男
思路:先合并两个文件并排序
[root@localhost ~]$ cat a b |sort -k1 孙者行 50000岁 孙者行 男 孙行者 50岁 孙行者 男 者行孙 5000岁 者行孙 男 行者孙 500岁 行者孙 男
先定义一个容器为$1,也就是名字,然后做判断如果下一行的$1与这个相同的话,只输出$2,并换行。因为定义为空,所以不符合所以判断else输出$1,$2 也就是 孙者行 50000。其后判断相同只输出 $2 并换行。 如果说要的输出效果是 孙行者 50岁 男
那要怎么办呢?
cat a b |sort -k1 |awk ‘BEGIN{t=""}{t=$1;if(tt==t){printf("\t");printf("%s",$2);printf("\n")}else{printf("%s %s",$1,$2);printf("\n")}tt=t}‘ 孙者行 50000岁 男 孙行者 50岁 男 者行孙 5000岁 男 行者孙 500岁 男 思路其实都是一样的。
本文出自 “孜孜不倦的学习着...” 博客,请务必保留此出处http://jonyisme.blog.51cto.com/3690784/1671260
标签:awk 记录
原文地址:http://jonyisme.blog.51cto.com/3690784/1671260