如何在awk中的搜索模式中使用i循环



>我正在尝试计算大型数据文件中末尾包含数字的字符串,为此使用"for i 循环"连续搜索所有这些字符串。这是我的代码:

#!/bin/bash
for (( i=2; i<=253; i++ ))
do
awk -F "t" '$3 ~ /^names.i$/ {++c} END {print c}' myfile >> output.txt
done

出于某种原因,尽管使用 awk 只能提供正确的输出,但脚本在 shell 中只产生空格。我做错了什么?

只需在 1 个 awk 调用中完成整个操作:

awk -F 't' '
{ split($3,arr,/./); ++c[arr[2]] }
END { for (i=2;i <= 253;i++) print c[i]+0 }
' myfile > output.txt
你不能

像那样直接在awk中使用shell变量i。先把它传递给awk:

for (( i=2; i<=253; i++ ))
do
   awk -v i=$i -F "t" '$3 ~ "^names." i "$" {++c} END {print c}' myfile >> output.txt
done

试试这个

awk -F "t" '{for (i=2;i<=253;i++) if ($3 ~ /^names.i$/) ++c} END {print c}' myfile

相关内容

  • 没有找到相关文章

最新更新