awkにファイルテキスト内の一致する文字列の複数行を条件付きで印刷させるにはどうすればよいですか?

awkにファイルテキスト内の一致する文字列の複数行を条件付きで印刷させるにはどうすればよいですか?

条件に合った複数のパターンの行を印刷するには?

たとえば、入力ファイルの場合

セクションには以下が含まれます。

ID : 1

Status : Ok

Name : Lulu

Age : 18

State : US




ID : 2

Status : Ok

Name : Master Yi

Age : 22

State : UK



ID : 3

Status : Ok

Name : Garen

Age : 20

State : CA
------------

Codition : IF Age == 20 | print 
----------

ID : 3

Status : Ok

Name : Garen

Age : 20

State : CA

助けてください

ありがとう

ベストアンサー1

ファイルが表示されているように見える場合は、各レコード間に4つの空白行があり、各レコード間に3つの空白行がある場合は、次のことができます。

$ awk -v RS='\n\n\n\n' '/Age : 20\n/' file 
ID : 3

Status : Ok

Name : Garen

Age : 20

State : CA

あなたはこれを明確にしませんでしたが、余分な空白行は実際にはファイルの一部ではなく問題の書式のアーティファクトにすぎないと思います。したがって、レコードの各行の間には空行が 1 つだけあり、レコードごとのレコード間に 2 つの空行があります。その場合、入力ファイルは次のようになります。

ID : 1
Status : Ok
Name : Lulu
Age : 18
State : US


ID : 2
Status : Ok
Name : Master Yi
Age : 22
State : UK

ID : 3
Status : Ok
Name : Garen
Age : 20
State : CA

ファイルが次のような場合は、次のようにできます。

$ awk -v RS= '/Age : 20\n/' file
ID : 3
Status : Ok
Name : Garen
Age : 20
State : CA

おすすめ記事