"cut -d"の後にファイルの行番号を表示します。 "-f3 | uniq -d"

特定の列に重複データを表示し、元の行番号を提供する簡単なコマンドを作成しようとしています。

ファイルの例:

JENNIE;30;DOCTOR;F
SARA;26;POLICE;F
EDWARD;32;TEACHER;M
ROBERT;44;POLICE;M

次のコマンドを使用すると、列3で重複した内容を取得できます。

cat FILE.txt |cut -d ";" -f3 | sort | uniq -d

問題は、結果の元の行番号を取得する必要があることです。

私のコマンドは以下を示しています:

POLICE
POLICE

欲しい

2- POLICE
4- POLICE

ベストアンサー1

GNUsortとGNUを使用すると、uniq次のことができます。

$ <FILE.txt awk -F';' '{print NR"- "$3}' | sort -st' ' -k2 | uniq -Df1
2- POLICE
4- POLICE

行は最初にテキストの語彙順に並べ替えられ、次に数字順に並べ替えられます(-s同様に並べ替えられたテキストの元の順序を保持)。| sort -n行番号で並べ替えるには、1つを追加してください。

単独で使用awk:

awk -F';' '!x {c[$3]++}; x && c[$3] > 1 {print FNR"- "$3}' FILE.txt x=1 FILE.txt

おすすめ記事