awkを使用して最初のアルファベットを変更した後に空白行を挿入する

awkを使用して最初のアルファベットを変更した後に空白行を挿入する

bash連絡先のスクリプトを作成しています。アルファベットを変更すると、アルファベットレコードを空白行に区切ることができないことを除いて、すべてがうまく機能します。 awkを使用してソートされ提供されるファイルがあります。出力は次のとおりです。

Anand Anju
Anand Sanjay
Das Ajay
Deshpande Shweta
Kanetkar Ashok
Kanetkar Jyoti
Sabane Dhananjay
Sahani Surinder

以下のような出力を生成したいと思います。

Anand Anju
Anand Sanjay

Das Ajay
Deshpande Shweta

Kanetkar Ashok
Kanetkar Jyoti

Sabane Dhananjay
Sahani Surinder

私は効果的な解決策が欲しいですawk

ベストアンサー1

awk現在の入力行の最初の文字を選択するために使用されます。最初の文字が前の行と異なる場合は空行が出力されます。行の最初の文字を記憶し、現在の行を印刷します。これにより、最初の文字が前の行の最初の文字から変更された場合、各行の前に空白行が出力されます。

$ awk '{ cur = substr($0,1,1) } NR > 1 && cur != prev { print "" } { prev = cur; print }' file
Anand Anju
Anand Sanjay

Das Ajay
Deshpande Shweta

Kanetkar Ashok
Kanetkar Jyoti

Sabane Dhananjay
Sahani Surinder

おすすめ記事