我的表文件示例看起来像这样
Name1 xxxxx 34
Name1 xxxxx 37
Name2 aaaaa 59
Name2 xxxxx 90
Name4 Name3 12
名称文件看起来像这样
Name1
Name2
Name3
Name4
我要
awk
匹配 Name1/2/3/4
从名称文件到表文件 $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
几乎完美 - 我想添加
0
至 Name3
得到这样的输出Name1 71
Name2 149
Name3 0
Name4 12
这么多问题是:如何添加
if not found do
awk 中的函数?
最佳答案
Y 不需要任何“未找到”行为。你只是没有正确初始化 SUM
计数前的变量。使用 BEGIN {SUM = 0}
为了那个原因。
如果您需要明确地找到/未找到行为,请执行类似的操作。首先,初始化一些变量 BEGIN {FOUND = 0}
然后在模式匹配上进行某种更改:(...) {FOUND = FOUND+1}
最后用 if(FOUND!=0)
测试一下.
关于awk 语句 - 如果没有找到 (grep'ed) 做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17084127/