在这种情况下如何使用awk函数

时间:2013-10-16 18:30:54

标签: bash shell awk

所以我试图打破一个列表并使用awk将数据放入单个文件中。到目前为止,我有这个...但它不起作用:

#!/bin/bash

for i in "45" "64" "60" "70" "74" "76"
do
        awk -v x="${i}" -F, '/x/ { print }' alluls.csv > $i.csv
done

echo "script has run"

然而..我得到所有空白文件

3 个答案:

答案 0 :(得分:2)

awk变量未在/.../内评估;你必须使用match函数。

awk ... 'match($0, x) { print }'

答案 1 :(得分:2)

这样做的明智方法只是一个awk命令(未经测试):

awk -v valS='45 64 60 70 74 76' '
BEGIN{ split(valS,valA) }
{
    for (i=1; i in valA; i++)
        if ($0 ~ valA[i])
            print > (valA[i] ".csv")
}
END { print "script has run" }
' alluls.csv

答案 2 :(得分:0)

你的正则表达式正在寻找文字“x”而不是变量值。