質問: address.txt から改行毎に区切り、4つのレコードとし、そのうち「合格」という文字列が入っているレコードを抽出するにはどうすればよいでしょうか。 以下のコマンドを入力したら全て出力されてしまいます。 ``` cat address.txt | awk 'BEGIN{RS="";FS="\n"} $2=="合格"' ``` **address.txt** ``` 東川 雄一 合格 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 ```
回答: `RS`(Record Separator) を改行2個(空行)に、`FS`(Field Separator)を改行にするとよろしいかと思います。`ORS` の指定はお好みで。 ``` awk -F '\n' -vRS='\n\n' -vORS='\n\n' '$2=="合格"' address.txt ``` **実行結果** ``` 東川 雄一 合格 080-1111-1111 〒111-1111 ××県××区A町 1-1-1 ABCビル1001 南山 裕三 合格 080-3333-3333 〒333-3333 ××県××市C町 3-3-3 XYZハイツ3号室 ```