免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何删除文件中重复的字符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-06-27 10:15 |只看该作者 |倒序浏览
大家好,刚接触shell不就,在这里请教大家如何能够删除文件中的重复内容。
待处理文件如下:
we avoid  avoid bois
ccccc  ddddd 1123 1123
fdsaflsj  we

希望去重后的结果如下:
we avoid  bois
ccccc  ddddd 1123
fdsaflsj

在这先谢谢给位前辈的帮助啦~

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2016-06-27 10:28 |只看该作者
  1. awk '{for(i=0;i++<NF;)if(!a[$i]++)printf $i FS;print xxoo}' urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2016-06-27 10:54 |只看该作者
可以的,非常感谢您的帮助!!! 谢谢  回复 2# 关阴月飞


   

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
4 [报告]
发表于 2016-06-27 10:55 |只看该作者
本帖最后由 haooooaaa 于 2016-06-27 10:57 编辑
  1. sed -r 's#(\b\w+\b)\s+([^\b\1\b]\s+){0,}\b\1\b#\1#g'
复制代码
  1. awk '{for(i=1;i<=NF;i++)if(split($0,t,"\\<"$i"\\>")>2)sub($i,"");$1=$1;print}'
复制代码

论坛徽章:
5
金牛座
日期:2015-07-03 13:32:00卯兔
日期:2015-07-03 13:32:17程序设计版块每日发帖之星
日期:2015-11-29 06:20:0015-16赛季CBA联赛之同曦
日期:2015-12-15 09:36:06CU十四周年纪念徽章
日期:2016-07-06 17:18:48
5 [报告]
发表于 2016-06-27 11:29 |只看该作者
回复 2# 关阴月飞


你好,能解释下print xxoo啥意思吗,百度都没搜到

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
6 [报告]
发表于 2016-06-27 11:34 |只看该作者
  1. sed -r ':1;s/(\S+) (.*)\1/\1\2/;t1' file
复制代码

论坛徽章:
768
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
7 [报告]
发表于 2016-06-27 11:34 |只看该作者
  1. awk '{for(i=1;i<=NF;i++)if(!a[$i]++)printf i==1?$i:FS$i;print ""}' i
  2. we avoid bois
  3. ccccc ddddd 1123
  4. fdsaflsj
复制代码

论坛徽章:
768
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
8 [报告]
发表于 2016-06-27 11:36 |只看该作者
回复 5# seanking1987

别太认真,随便一个字符串而已,
只是论坛很多大神偏好于使用"xxoo".
   

论坛徽章:
5
金牛座
日期:2015-07-03 13:32:00卯兔
日期:2015-07-03 13:32:17程序设计版块每日发帖之星
日期:2015-11-29 06:20:0015-16赛季CBA联赛之同曦
日期:2015-12-15 09:36:06CU十四周年纪念徽章
日期:2016-07-06 17:18:48
9 [报告]
发表于 2016-06-27 14:09 |只看该作者
本帖最后由 seanking1987 于 2016-06-27 14:10 编辑

回复 8# Herowinter

thanks,其实更准确的说我是想问为什么要 print xxoo,后来查了一下awk  print和printf的区别,现在知道原因了。

The performance difference is probably not measurable.
The print function outputs a newline at the end; printf does not unless requested.
The print code converts the arguments to strings and then sends them to the output separated by the OFS (output field separator).

The printf code might need to convert the string to a double before formatting it using a double format (%16.8g or something), and similar operations.
The system call used is going to write(2) or something similar for both, but there'll be code (probably <stdio.h>) layered above that.


   

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
10 [报告]
发表于 2016-06-27 18:13 |只看该作者
  1. awk '{for(i=1;i<=NF;i++)if(!a[$i]++)printf (i==1?"":FS) $i;print""}'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP