どんな単語でも含まれている行を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つ以上そのような場合
==
はに変更してください>=
。
読む距離
\2
は逆参照。\w
\W
\<
\>
GNU Grepの特別な式。[:alnum:]
POSIXキャラクタークラス。