次の形式の従業員のリストがあります。
Name:
Phone No:
Email:
Name:
Address:
Phone No:
Email:
Name:
Country:
Address:
Phone No:
Email:
Name:
Address:
Name :
Email:
Address:
私が望むのは、名前と電子メールアドレスを取得することだけです。
同様のことを試しましたが、cat filename | grep -e ^Name: -e ^Email:
100%成功しませんでした。
答え1
|
grepコマンドでは、「or」演算子を正規表現として使用します。また必要ありませんcat
。grep
ファイルから直接読み取ることができます。
grep '^Name:\|^Email:' filename
答え2
「100%成功しない」がフィールド名ではなくフィールド値のみが必要であることを意味する場合は、awk
代わりにgrepを使用する必要があります。
例えば
awk -F: '$1 ~ /^(Name|Email)$/ {print $2}' filename
または、各レコードを空白行で区切るには、次の手順を実行します。
awk -F: '$1 ~ /^(Name|Email)$/ {print $2}; /^[[:space:]]*$/ {print "\n"}' filename