免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3679 | 回复: 19

[文本处理] 求两者之间的差别 [复制链接]

论坛徽章:
0
发表于 2012-12-18 15:50 |显示全部楼层
  1. a="autofs_ldap_auth config conman dhcp6c dnsmasq esd gcof gpm-root grub gssapi_mech host   test idmapd initlog jwhois krb5 ldap ld ld lftp libaudit libuser logrotate ltrace man mcelog mke2fs mke4fs modprobe mtools multipath nscd nsswitch ntp oddjobd oddjobd pam_smb prelink prelink reader reader redis_cache_2 redis_persistent_2 redis_persistent_2 request-key resolv rsyncd scsi_id sestatus smartd sysconfig sytl syslog td updtedb warnquota xinetd yp yum"
  2. b="autofs_ldap_auth config conman dhcp6c dnsmasq esd gconf gpm-root grub gssapi_mech host idmapd initlog jwhois krb5 ldap ld ld lftp libaudit libuser logrotate ltrace man mcelog mke2fs mke4fs modprobe mtools multipath nscd nsswitch ntp oddjobd oddjobd pam_smb prelink prelink reader reader redis_cache_2 redis_persistent_2 redis_persistent_2 request-key resolv rsyncd scsi_id sestatus  join  smartd sysconfig sysctl syslog tcsd updab warnquota xinetd yp yu"
复制代码
求帮忙解答
怎么把a特有的字符串和b特有的字符串弄出来,他们两个相同的?

论坛徽章:
0
发表于 2012-12-18 16:00 |显示全部楼层
不想用两个for循环
求大神高招
jomenxiao 发表于 2012-12-18 15:50
求帮忙解答
怎么把a特有的字符串和b特有的字符串弄出来,他们两个相同的?

论坛徽章:
0
发表于 2012-12-18 16:07 |显示全部楼层
用diff 试试

论坛徽章:
0
发表于 2012-12-18 16:28 |显示全部楼层
diff 肯定不行
diff 是比较file之间的
回复 3# 3300jiu45


   

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2012-12-18 16:45 |显示全部楼层
回复 4# jomenxiao

没测试,
    diff <<<${a// /\n} <<<${b// /\n}

论坛徽章:
0
发表于 2012-12-18 17:00 |显示全部楼层
不行
回复 5# yinyuemi


   

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2012-12-18 17:17 |显示全部楼层
本帖最后由 yinyuemi 于 2012-12-18 17:32 编辑

回复 6# jomenxiao


      
M没环境测试,难道是
    diff <(echo ${a// /\\n}) <(echo ${b// /\\n})
不行的话试试
diff <(echo $a|sed 's/ /\n/') <(echo $b|sed 's/ /\n/')

论坛徽章:
0
发表于 2012-12-18 17:42 |显示全部楼层
diff <<<$(echo ${a} |sed 's/ /\n/g') <<<$(echo ${b}|sed 's/ /\n/g')

diff: missing operand after `diff'
转化成输入后还是不行
man diff 明确指出只用于file比较

a和b中的顺序可能是错乱的,这样对比出来的可能还是不行

可不可以用awk实现?

回复 7# yinyuemi


   

论坛徽章:
0
发表于 2012-12-18 18:31 |显示全部楼层
  1. #!/bin/sh
  2. #
  3. sed -n -e '1w tmp1' -e '2w tmp2' $1
  4. sed -i 's/ /\n/g' tmp1 tmp2
  5. diff tmp1 tmp2 > diff_result.txt
  6. rm tmp1 tmp2
复制代码
如果只是自己看的话用
vimdiff 比 diff
更方便

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2012-12-18 19:42 |显示全部楼层
回复 8# jomenxiao
  1. grep -vxFf <(echo $a|sed 's/ /\n/g') <(echo $b|sed 's/ /\n/g')
复制代码
  1. grep -vxFf <(echo $b|sed 's/ /\n/g') <(echo $a|sed 's/ /\n/g')
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP