• 请不要在回答技术问题时复制粘贴 AI 生成的内容
338899
V2EX  ›  程序员

请教:没有用找出重复和追加的好方法?

  •  
  •   338899 · Jul 30, 2016 · 3940 views
    This topic created in 3750 days ago, the information mentioned may be changed or developed.
    打个比方: a.txt 是一份手机号码; 1 个月后收到 b.txt 手机号码,但是 b.txt 号可能和 a 有重复。
    需求:把 b.txt 剔除 a 的重复,只保留 a.txt 没有的号码。

    朋友们有没有什么简易的方法呢?

    谢谢了。。。
    36 replies  •  2016-07-30 19:19:54 +08:00
    choury
    choury
    Jul 30, 2016 via Android
    1
    sort | uniq
    ferran
    ferran
    Jul 30, 2016 via Android
    2
    先排序,然后双指针查
    Valyrian
    Valyrian
    Jul 30, 2016
    3
    @choury 其实有一个 sort -u...
    SlipStupig
    SlipStupig
    Jul 30, 2016❤️1
    4
    cat a.txt b.txt | uniq | sort -u
    lcorange
    lcorange
    Jul 30, 2016
    5
    java hashmap
    caixiexin
    caixiexin
    Jul 30, 2016 via Android
    8
    如果是固定格式,比如逗号分隔或一行一个,导入 excel 就能处理了吧?
    zhuangzhuang1988
    zhuangzhuang1988
    Jul 30, 2016
    9
    简单的白名单黑名单问题.
    http://algs4.cs.princeton.edu/30searching/
    到这里找..
    secondwtq
    secondwtq
    Jul 30, 2016
    10
    两位玩 shell 的理解错需求了吧
    是 a 里面是 1 3 5 7 9 , b 里面的是 0 1 2 3 4 5 6 7 8 9
    楼主要的是 0 2 4 6 8

    sort uniq 下来是 0 1 2 3 4 5 6 7 8 9 ...
    338899
    338899
    OP
    Jul 30, 2016
    11
    @aeshfawre
    兄台这个我不太会用啊, windows 下有没有?
    338899
    338899
    OP
    Jul 30, 2016
    12
    @caixiexin 兄台这个我不太会用啊, windows 下有没有?
    chengluyu
    chengluyu
    Jul 30, 2016❤️1
    13
    comm -23 <(sort a.txt) <(sort b.txt) | uniq
    500miles
    500miles
    Jul 30, 2016
    14
    sort a.txt <(sort -u b.txt) | uniq -u
    500miles
    500miles
    Jul 30, 2016
    15
    @chengluyu comm 更好用一些👍
    aeshfawre
    aeshfawre
    Jul 30, 2016
    16
    看完楼主的回答,楼主应该,命令行,python 都不太熟悉.
    所以楼主需要的是这种玩意:
    ![]( http://i1.piimg.com/4851/dac0443a4780c8fb.png)

    面向非程序员的东西,是收费的.
    qqmishi
    qqmishi
    Jul 30, 2016 via Android
    17
    理论上可以在 excel 里面用 VBA 解决
    zhx1991
    zhx1991
    Jul 30, 2016
    18
    如果不追求效率(看起来确实这样)

    不用在算法上玩花样

    随便找个语言把 a 里的遍历出来一个一个去 b 里看好了
    UnisandK
    UnisandK
    Jul 30, 2016
    19


    Beyond Compare
    cmxz
    cmxz
    Jul 30, 2016 via Android
    20
    @secondwtq cat a.txt b.txt|sort|uniq -d>c.txt
    cat b.txt c.txt|sort|uniq -u
    cmxz
    cmxz
    Jul 30, 2016 via Android
    21
    @338899 win
    下装个 git( https://git-scm.com ) 然后就可以在 git bash 里执行
    skydiver
    skydiver
    Jul 30, 2016 via Android❤️1
    22
    用不着那么麻烦, sort uniq 基本可以解决大部分问题了。

    取交集 cat a.txt b.txt|sort|uniq -d
    取差集 cat a.txt a.txt.b.txt|sort|uniq


    @cmxz 并不需要两步,一步就出来了~
    zclzhangcl
    zclzhangcl
    Jul 30, 2016
    23
    方法有很多。如果量不大,不是几百万的那种。有 excel 的 vba ,还有楼上有一位兄弟的 beyond compare 。
    不过这个问题为毛我的第一反应是写个程序呢。。。。。
    cmxz
    cmxz
    Jul 30, 2016 via Android
    24
    @skydiver 取差集的话也会有 a.txt 中存在, b.txt 中不存在的内容…
    skydiver
    skydiver
    Jul 30, 2016❤️1
    25
    @cmxz 你仔细看我的命令,只会出现 b 里有 a 里没有的内容
    cmxz
    cmxz
    Jul 30, 2016 via Android
    26
    @skydiver 居然还可以这样…
    cmxz
    cmxz
    Jul 30, 2016 via Android
    27
    @skydiver 不过后面应该是 uniq -u 吧
    gamexg
    gamexg
    Jul 30, 2016
    28
    @cszhiyue 长见识了,第一次知道 set 之间可以相减。
    skydiver
    skydiver
    Jul 30, 2016
    29
    @cmxz 哈哈,经典技巧, cat 两次

    对的,后面应该是 uniq -u ,写错了
    skydiver
    skydiver
    Jul 30, 2016
    30
    @skydiver 更正:取 b-a 差集: cat a.txt a.txt.b.txt|sort|uniq -u
    xpol
    xpol
    Jul 30, 2016 via Android
    31
    Ruby Array 你值得拥有。
    RockyLee
    RockyLee
    Jul 30, 2016
    32
    Python set
    rrfeng
    rrfeng
    Jul 30, 2016
    33
    明明是 grep 就能完成的事情……

    grep -v -f b.txt a.txt
    rrfeng
    rrfeng
    Jul 30, 2016
    34
    @rrfeng
    a b 可能写反了。
    Arnie97
    Arnie97
    Jul 30, 2016 via Android
    35
    @338899 @cmxz 用不着搬出 Git Bash 这种大家伙, Gow 即可
    Gran1987
    Gran1987
    Jul 30, 2016
    36
    第一反应 Git
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1298 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 19:25 · PVG 03:25 · LAX 11:25 · JFK 14:25
    ♥ Do have faith in what you're doing.