Answers:
awk -F '|' '$1 ~ /smiths/ {sum += $3} END {print sum}' inputfilename
-F
标志设置字段分隔符;我将其用单引号引起来,因为它是一个特殊的外壳字符。 $1 ~ /smiths/
将以下{code block}仅应用于第一个字段与regex匹配的行/smiths/
。 请注意,由于您实际上并没有真正使用正则表达式,而只是使用特定值,因此可以轻松使用:
awk -F '|' '$1 == "smiths" {sum += $3} END {print sum}' inputfilename
哪个检查字符串是否相等。/^smiths$/
正如在另一个答案中提到的,这等效于使用regex ,它包括^
仅与字符串的开头(字段1的开头)$
匹配的锚和仅与字符串的末尾匹配的锚。不知道您对正则表达式有多熟悉。它们非常强大,但是在这种情况下,您可以轻松地使用字符串相等性检查。
unzip -lv /appl/tmp/data.lar | grep documentlibrary | awk '{sum += $1} END {print sum/1024/1024}'
我个人更希望使该awk
部分尽可能简单,并且在没有它的情况下尽可能多地执行。混合逻辑没有利用Unix管道的功能,因此对于紧密相关的用例更难以理解,调试或修改。
cat filename.txt | perl -pe 's{.*|}{}g' | awk '{sum+=$1} END {print sum}'