免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3990 | 回复: 18
打印 上一主题 下一主题

[文本处理] awk处理相同列块的问题[已解决] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-05 16:33 |只看该作者 |倒序浏览
本帖最后由 lnzfm 于 2014-09-05 17:26 编辑

数据格式如下:
111 aaa 1
222 aaa 2
333 bbb 1
444 ccc 1
555 ccc 2
666 ccc 3
777 ddd 1

希望用awk简化输出相同的的列块,即如果下以行的第二列于上一行的第二列相同时,只输出第一列和第三列,希望得到的输出结果为
111 aaa 1
222       2
333 bbb 1
444 ccc 1
555       2
666       3
777 ddd 1
脑子不够用,请各位帮忙,先行致谢

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
2 [报告]
发表于 2014-09-05 16:36 |只看该作者
awk 'a[$2]++{$2=""}1' file

论坛徽章:
2
金牛座
日期:2014-07-24 17:16:41双鱼座
日期:2014-09-16 16:18:36
3 [报告]
发表于 2014-09-05 16:47 |只看该作者
两行不连续的$2相同就惨了 回复 2# chengchow


   

论坛徽章:
7
亥猪
日期:2013-10-10 17:00:29辰龙
日期:2013-10-12 16:23:19卯兔
日期:2013-11-18 17:01:27金牛座
日期:2014-09-09 10:17:052015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之柏太阳神
日期:2015-09-25 13:56:42数据库技术版块每日发帖之星
日期:2016-08-06 06:20:00
4 [报告]
发表于 2014-09-05 16:56 |只看该作者
回复 3# Fock3r
LZ的意思应该是像2楼的;若是你的意思。那就如下吧
  1. awk 'd==$2{print $1,$3;next}{d=$2}1' file
复制代码

论坛徽章:
2
金牛座
日期:2014-07-24 17:16:41双鱼座
日期:2014-09-16 16:18:36
5 [报告]
发表于 2014-09-05 17:00 |只看该作者
本帖最后由 Fock3r 于 2014-09-05 17:07 编辑

大神你的还是有些问题?
try:
cat 1.txt
1 2 3
a b c
b b b
2 2 2
  1. sort -k2 1.txt  | awk 'a[$2]++{$2=""}1'
复制代码
哎,只能写到这里了。回复 4# li0924


   

论坛徽章:
0
6 [报告]
发表于 2014-09-05 17:00 |只看该作者
本帖最后由 lnzfm 于 2014-09-05 17:08 编辑

第二列是经过排序处理的,chengchow的shell处理的很好,但是我发现这样输出的格式会很混乱,如何做格式化输出呢?
第一列宽度6(右对齐)    第二列宽度16左对齐    第三列宽度20左对齐
上面三列都是字符串型的,如果第二列为空用空格补齐
如果方便的话请帮忙再补充一下

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
7 [报告]
发表于 2014-09-05 17:02 |只看该作者
回复 3# Fock3r
sort -k2 file | awk 'a[$2]++{$2=""}1'


   

论坛徽章:
2
金牛座
日期:2014-07-24 17:16:41双鱼座
日期:2014-09-16 16:18:36
8 [报告]
发表于 2014-09-05 17:16 |只看该作者
本帖最后由 Fock3r 于 2014-09-05 17:31 编辑
  1. sort -k2 1.txt  | awk 'a[$2]++{$2=""}{if(NF<=2)printf("%-6s%-20s\n",$1,$2);else printf("%-6s%-16s%-20s\n",$1,$2,$3)}'
复制代码
间隔视情况调整。回复 7# chengchow


   

论坛徽章:
7
亥猪
日期:2013-10-10 17:00:29辰龙
日期:2013-10-12 16:23:19卯兔
日期:2013-11-18 17:01:27金牛座
日期:2014-09-09 10:17:052015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之柏太阳神
日期:2015-09-25 13:56:42数据库技术版块每日发帖之星
日期:2016-08-06 06:20:00
9 [报告]
发表于 2014-09-05 17:17 |只看该作者
回复 5# Fock3r
有什么问题?


   

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
10 [报告]
发表于 2014-09-05 17:19 |只看该作者
本帖最后由 reb00t 于 2014-09-05 17:21 编辑

php练习
代码支持不连续$2{:2_176:}
  1. <?php
  2. $fp = file_get_contents('200.txt');
  3. $arr=explode(' ', $fp);
  4. $strarr=array();
  5. for ($i=1; $i <count($arr); $i+=2) {

  6.      if(in_array($arr[$i], $strarr)){   
  7.            $arr[$i]=" ";
  8.      }else {
  9.                  $strarr[]=$arr[$i];
  10.      }
  11.       
  12. }
  13. echo implode(' ', $arr);

  14. ?>

  15. 结果:
  16. 111 aaa 1
  17. 222   2
  18. 333 bbb 1
  19. 444 ccc 1
  20. 555   2
  21. 666   3
  22. 777 ddd 1
  23. 666   3
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP