我正在尝试计算在大数据文件中包含数字的字符串,为此使用“for i loop”连续搜索所有这些字符串。这是我的代码:
#!/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中只生成空格。我做错了什么?
答案 0 :(得分:3)
在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
答案 1 :(得分:2)
你不能直接在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
答案 2 :(得分:1)
试试这个
awk -F "\t" '{for (i=2;i<=253;i++) if ($3 ~ /^names.i$/) ++c} END {print c}' myfile