私のテーブルファイルの例を行うことawkの文 - 見つからない場合(に読まれる)
Name1 xxxxx 34
Name1 xxxxx 37
Name2 aaaaa 59
Name2 xxxxx 90
Name4 Name3 12
名のファイルは、私はawk
名前のファイルからName1/2/3/4
を一致させたいという
Name1
Name2
Name3
Name4
のように見えるようになります。テーブルファイル$ 1と$ 3のプリント合計に変換します。 名前が見つからない場合0
- どうすればいいですかif
awk
に記載されていますか?
私はすでに行わ:
for i in $(cat Name_file)
do
cat table | awk -v NAME="$i" '($1==NAME) {SUM+=$3} END {print NAME"\t"SUM}'
done
が出力に
Name1 71
Name2 149
Name3
Name4 12
を与えることはほぼ完璧だ - 私は
Name1 71
Name2 149
Name3 0
Name4 12
このような出力を得るためにName3
に0
を追加したいので、多くの質問どのようにif not found do
関数をawkに追加するのですか?
私は[:bashのタグ]に代わりに '' $(猫ファイル)の '' $(<ファイル)を使用することを示唆しています。最初の表記は外部ユーティリティを呼び出さない。また 'cat file | 'の代わりに' awk' ... 'file'を使います。 awk '...' '。 – TrueY
あなたは '$()のiの意味ですか?あなたの提案と 'read WORDの間の違いは何ですか?コマンドを実行します。完了
はい、 '$()を使用してください。 '$(cat Name_file)'のための内部的な 'bash'ショートカットです。だから 'cat'を呼び出さず、ファイルを開くだけです。 'read'内部関数は、'
TrueY