コンテンツに応じて行番号を指定する

コンテンツに応じて行番号を指定する

内容に応じて行の番号を付けたいです。最初の行は 1 に番号が付けられ、2 番目の行は最初の行と同じ場合は 2 に、異なる場合は 1 に指定されます。たとえば、

asdf
asdf
asdf
asdf
dfg
dfg
dfg
qwert
qwert
er
qwert
er
asdf

結果は次のとおりです。

1   asdf
2   asdf
3   asdf
4   asdf
1   dfg
2   dfg
3   dfg
1   qwert
2   qwert
1   er
3   qwert
2   er
5   asdf

ベストアンサー1

awkを使うと簡単になります。

awk '{ print ++c[$0],$0 }' < test

ここでtestはデータを含むファイルです。ここではいくつかの仮定をしていますが、質問では明確ではありません。まず、ファイルがすでにソートされているとします。そうでない場合:-

sort < test | awk '{ print ++c[$0],$0 }'

また、最初の単語(2つ以上必要な場合)だけでなく、行全体が重要だと思います。最初の単語のみを処理するには、次のようにします。

awk '{ print ++c[$1],$0 }' < test

おすすめ記事