Board logo

标题: [文本处理] 批处理如何过滤出两个文本中都不存在的行? [打印本页]

作者: wifayy    时间: 2015-4-29 14:19     标题: 批处理如何过滤出两个文本中都不存在的行?

文本A 内容

1111:111 111
2222:222 222
3333:333 333
4444:444 444
5555:888 888

文本B 内容
1111:sss sss
2222:zzz xxx
3333:333 333
4444:qww eee

首先过滤出 3333:333 333  完全一样的内容行
其次过滤出 分号前面相同 后面不同的内容行 如
1111:sss sss 1111:111 111
2222:zzz xxx 2222:222 222
4444:444 444 4444:qww eee

得到5555:888 888  AB 两个文本中 都不存在的行 类似于5555:777 777 也不行

也就是说过滤出 AB两个文本中都不存在的行 包括 分号前面相同的行也不要
作者: CrLf    时间: 2015-4-29 14:35

卧槽,文本里没有的东西多了去了,随便编一个都是文本之外的好么
作者: gawk    时间: 2015-4-29 14:37

  1. gawk -F: "NR==FNR{a[$1]=$1}NR>FNR{if(!($1 in a))print}" B.txt A.txt > C.txt
复制代码

作者: wifayy    时间: 2015-4-29 14:48

回复 2# CrLf


    大哥不懂你的意思
作者: wifayy    时间: 2015-4-29 14:50

回复 3# gawk


    谢谢哥们 需求变动下 过滤单文本里的重复行和 分号前面相同内容的行 同时得到结果A和B
A是去掉了重复行和分号前面相同内容的行的结果 B是去掉的内容 该怎么写呢
先谢过
作者: gawk    时间: 2015-4-29 15:07

回复 5# wifayy
  1. gawk -F: "{a[$1]++;if(a[$1]==1)print >\"1.txt\";else print >\"2.txt\"}" A.txt
复制代码

作者: wifayy    时间: 2015-4-29 15:10

回复 6# gawk


    哥们 我看了半天才发现 你这个不是BAT吧。
作者: gawk    时间: 2015-4-29 16:13

回复 7# wifayy


    gawk是一个第三方命令行工具,可以在BAT里面调用,提高处理文件的速度。
作者: wifayy    时间: 2015-4-29 21:31

回复 8# gawk


    很有用 感谢了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2