【问题标题】:How can I delete duplicate words in text file如何删除文本文件中的重复单词
【发布时间】:2012-11-24 15:36:55
【问题描述】:

我有文本文件:

abandonovať
abandonovať, neabandonovať
abandonovať, abandonujem
abandonovať, abandonuješ
abandonovať, abandonuje
abandonovať, abandonuje
abandonovať, abandonuje
abandonovať, neabandonujem
abandonovať, neabandonuješ

我想删除每个重复的单词。它看起来像这样:

abandonovať
neabandonovať
abandonujem
abandonuješ
abandonuje
neabandonujem
neabandonuješ

有人知道如何在 GREP、AWK... 中制作它吗?

【问题讨论】:

    标签: awk grep duplicates


    【解决方案1】:

    您可以尝试使用:

    grep -o '\w*' a.txt | sort | uniq
    

    a.txt 是您的文件。

    【讨论】:

    • 它可以工作,但在我的文本文件中,我有像“nebudem bypassovať”这样的词,这对“abandonovať”是否定的,但是这个命令删除了“abandonovať”,只有“nebudem”保留。如何解决?
    • 你可以使用'\(\w\+\s\)\?\w*'作为模式
    • 谢谢。如果我不想按字母排序单词?
    • 如果不使用sort,则无法使用uniq 删除重复项。或者您可以尝试以下 steve 的解决方案,它可能会起作用。
    【解决方案2】:

    这是使用GNU awk的一种方式:

    awk -F "[, ]" '{ for(i=1;i<=NF;i++) if (!a[$i]++ && $i != "") print $i }' file
    

    结果:

    abandonovať
    neabandonovať
    abandonujem
    abandonuješ
    abandonuje
    neabandonujem
    neabandonuješ
    

    【讨论】:

    • 再想一想,如果行中的某处有多余的空格,这看起来可能会失败?
    • 这些额外的空格必须以逗号开头。但如果是这样的话,那么 var 可能是某种词。
    • 它可以工作,但在我的文本文件中,我有像“nebudem avenuenovať”这样的词,它对“abandonovať”是否定的,但是这个命令删除了“abandonovať”,只有“nebudem”留下。如何解决?
    • @user1844845:请您再检查一次。该命令只会用“,”分隔符(即逗号然后空格)分隔单词。因此,“nebudem discoverovať”将被视为一个单词。如果您需要进一步的帮助,请发布更多示例数据(并在此处添加评论让我知道)。干杯。
    • a[$i]++; if (a[$i]==1) print $i 可以写成if (!a[$i]++) print $i。 !seen["foo"]++ 是惯用的 awk 方法,用于检查“foo”是否曾被见过。
    【解决方案3】:

    谢谢你们,在 GREP 中它可以工作,但它会按字母对单词进行排序。在 AWK 中它也可以工作,但我还有一个小问题。我的文本文件是:

    abandonovať
    abandonovať, neabandonovať
    abandonovať, abandonujem
    .
    .
    .
    

    如果我在 awk 中输入您的代码,我的结果是:

    abandonovať
    abandonovať,
    neabandonovať
    abandonujem
    .
    .
    .
    

    一个词有两次。一次带“,”,一次不带“,”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2022-01-17
      • 2010-10-31
      相关资源
      最近更新 更多