特定のファイルから特定のフィールドのみを取得する方法は?

特定のファイルから特定のフィールドのみを取得する方法は?

次の形式の従業員のリストがあります。

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」演算子を正規表現として使用します。また必要ありませんcatgrepファイルから直接読み取ることができます。

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

関連情報