

address.txt から改行毎に区切り、4つのレコードとし、そのうち「合格」という文字列が入っているレコードを抽出するにはどうすればよいでしょうか。

以下のコマンドを入力したら全て出力されてしまいます。

[code]

    cat address.txt | awk 'BEGIN{RS="";FS="\n"} $2=="合格"'
    
[/code]

**address.txt**

[code]

    東川 雄一
    合格
    080-1111-1111
    〒111-1111
    ××県××区A町 1-1-1
    ABCビル1001
    
    
    西村 祐二
    不合格
    080-2222-2222
    〒222-2222
    ××県××市B町 2-22
    
    南山 裕三
    合格
    080-3333-3333
    〒333-3333
    ××県××市C町 3-3-3
    XYZハイツ3号室
    
    
    北岡 優四
    不合格
    080-4444-4444
    〒444-4444
    ××県××区D町 4-4-4
    
[/code]


CC BY-SA 4.0
2021-08-09T08:09:56.843
80686
2021-08-09T12:21:16.933
2021-08-09T12:21:16.933
3060
47639
question
linux shell awk grep
改行毎にawkで区切り、grepで特定の文字列が入っているレコードを抽出したい


`RS`(Record Separator) を改行2個(空行)に、`FS`(Field Separator)を改行にするとよろしいかと思います。`ORS`
の指定はお好みで。

[code]

    awk -F '\n' -vRS='\n\n' -vORS='\n\n' '$2=="合格"' address.txt
    
[/code]

**実行結果**

[code]

    東川 雄一
    合格
    080-1111-1111
    〒111-1111
    ××県××区A町 1-1-1
    ABCビル1001
    
    南山 裕三
    合格
    080-3333-3333
    〒333-3333
    ××県××市C町 3-3-3
    XYZハイツ3号室
    
[/code]


CC BY-SA 4.0
2021-08-09T08:41:29.793
80687
2021-08-09T08:41:29.793
47127
80686
answer