grepを使って単語が3回現れる行を見つけるには?

grepを使って単語が3回現れる行を見つけるには?

どんな単語でも含まれている行を3回探したいです。これを行うには、このコマンドを使用する方が良いと思いますgrep

これが私の試みです。

grep '\(.*\)\{3\}' myfile.txt

ベストアンサー1

標準単語定義を使用してください。

  • GNU grep,3つ以上発生回数どんな言葉でも

    grep -E '(\W|^)(\w+)\W(.*\<\2\>){2}' file
    

  • GNU grep,わずか3発生回数どんな言葉でも

    grep -E '(\W|^)(\w+)\W(.*\<\2\>){2}' file | grep -Ev '(\W|^)(\w+)\W(.*\<\2\>){3}'
    

  • POSIX awk,わずか3~の出現どんな言葉でも

    awk -F '[^_[:alnum:]]+' '{           # Field separator is non-word sequences
        split("", cnt)                   # Delete array cnt
        for (i=1; i<=NF; i++) cnt[$i]++  # Count number of occurrences of each word
        for (i in cnt) {
            if (cnt[i]==3) {             # If a word appears exactly 3 times
                print                    # Print the line
                break
            }
        }
    }' file
    

    ~のため3つ以上そのような場合==はに変更してください>=

    等しいゴルフボールの単一ライン:

    awk -F '[^_[:alnum:]]+' '{split("",c);for(i=1;i<=NF;i++)c[$i]++;for(i in c)if(c[i]==3){print;next;}}' file
    

  • GNU Awk、3回だけ登場言葉ab

    gawk 'gsub(/\<ab\>/,"&")==3' file
    

    ~のため3つ以上そのような場合==はに変更してください>=


読む距離

おすすめ記事