私のファイルには次の行があります
# Employee Id : ABC123,
# Employee Name: Vivek
# Employee Type: Temp Join Date: 31-jan-2014 Buz Code: 2098
# Employee Comments:
# Replacement for Jane
# Country: India
# State: Delhi
#
# Employee Id : GGG67,
# Employee Name: Kumar
# Employee Type: Temp Join Date:15-jan-2014 Buz Code: 2176
# Employee Comments:
# Country: India
# State: Delhi
# Street: Kanot
ここで必要があり、Employee ID
すべての従業員を表形式で表しますEmployee Name
。Buz Code
試しましたが、awk
期待した結果が得られませんでした。
どんな提案がありますか?
ベストアンサー1
すでに試したことを示している場合は、宿題のようには見えません。つまり、開始は次のようになります。フィールド名を一致させてフィールドを取得する必要がありますが、次のレコードに達するまで出力しないでください。表示されるすべてのレコードの間に「#」があると便利です。
$ awk -F: -f t.awk t
ABC123, Vivek
GGG67, Kumar
長い awk スクリプトを別のファイルに保存すると便利です。
$ cat t.awk
/Employee Id/ {empid=$2}
/Employee Name/ {name=$2}
/#/ {print empid, name} # What happens if the next record is missing name?
END {print empid, name}
または1行で:
$ awk -F: '/Employee Id/ {empid=$2}; /Employee Name/ {name=$2}; /#/ {print empid, name}; END {print empid, name}' t