繰り返しパターン印刷

繰り返しパターン印刷

何度も走るランナーの名前を印刷したいマラソンファイルがあります。それは次のとおりです。

M, 2:08:58.0, John Lukas, USA, 1997-07-25, Paris, France

F, 2:15:04:0, Abebbe Boukari, KEN, 2000-10-01, London, UK 

など。

uniqを試しましたが発生しませんでした。

uniq -d marathon | grep "[[:alpha:]]\+[ ]\+[[:alpha:]]"

ベストアンサー1

まず、名前で並べ替える必要があります。

注:「uniq」は、隣接しない限り重複行を検出しません。最初に入力をソートするか、「uniq」なしで「sort -u」を使用できます。

-t/-k次のオプションを使用してこれらのフィールドを並べ替えることができます。

sort -t',' -k 3 marathon

カンマを区切り文字として使用して、3番目のフィールドをソートします。

その後、awkを使用して3列目のみを印刷し、次のコマンドを使用できますuniq

sort -t',' -k 3 marathon | awk -F, '{print $3}'|uniq -d

/!\未検証

すべての行を保持するには、awkを使用して名前の発生回数を保存できます(count[$3]++)。名前のすべての行を保持します(lines[$3]=lines[$3]?lines[$3]+"\n"+$0:$0;:最初の行の場合は行を保存し、それ以外の場合は追加)。最後にcount≥2の場合は、if(count[i]>1){ print lines[i]}name()を使用して行を印刷します。

sort -t',' -k 3 marathon | awk -F, '{count[$3]++;lines[$3]=lines[$3]?lines[$3]+"\n"+$0:$0;}END{for (i in count){if(count[i]>1){ print lines[i]}}}'

おすすめ記事