1

所以我试图分解一个列表并使用 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"

但是..我得到所有空白文件

4

3 回答 3

2

awk变量不在内部评估/.../;您将不得不使用该match功能。

awk ... 'match($0, x) { print }'
于 2013-10-16T18:35:03.977 回答
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
于 2013-10-16T19:50:17.720 回答
0

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

于 2013-10-16T18:33:46.903 回答