列の編集には awk または sed を使用します。下のパターンを印刷するには?

列の編集には awk または sed を使用します。下のパターンを印刷するには?

Sample Input:

title          role        subject
name-JOHN      student      math
school         state        NY
county         street       Phone
name-TOM       student      math
school         state        TX
county         street       Phone
name-LILLY     student      math
school         state        LA
county         street       Phone
name-ROSY      student      math
school         state        WA
county         street       Phone
garbage line 1
garbage line 2

Desired Output

JOHN     NY
TOM      TX
LILLY    LA
ROSY     WA

下部の2つのガベージラインは消えなければなりません。 AWkまたはSEDを使用したいですか?

私はSunオペレーティングシステムを実行しています。

ベストアンサー1

GNUから提供sed

sed -n '/^name-/{s///;N;s/[a-z].*\s//p}' file
JOHN      NY
TOM       TX
LILLY     LA
ROSY      WA

GNUから提供awk

awk -F'[ -]+' '/name/{a=$2}/state/{print a,$3}' OFS='\t' file
JOHN    NY
TOM     TX
LILLY   LA
ROSY    WA

渡すgrep

grep -o '[[:upper:]]\{2,\}' file | paste - -
JOHN    NY
TOM     TX
LILLY   LA
ROSY    WA

おすすめ記事