我的 CSV 文件有 47 列,我想通过某个字段的值选择第 36 - 47 列。从第 36 到 47 列开始,每个条目是这样的:“1/1:0,297: 297 :99:10476,951,0”
我使用下面的 AWK 代码用“:”分割这个条目,并检查 array[3] >= 20(上面突出显示的是 array[3] 中的 297。如果它通过检查,则将条目打印到新的CSV,否则打印出“./.”。我需要无条件打印出前 35 列。
当我在名为 awk_byDP (chmod u+x) 的文件中运行以下代码时,它给了我这个错误:
/usr/bin/awk: 源代码第 6 行源文件中的语法错误 ./awk_byDP 上下文是
? <<< /usr/bin/awk: 源代码第 6 行源文件 ./awk_byDP 处的非法语句
#!/usr/bin/awk -f
BEGIN {-F","; OFS=","}
NR <= 1 {next}
NR > 1 {
for (j=1; j<=35; j++) { printf("%s", $j) } #line 6
for (i=36; i<=47; i++) {
t=$i;
split(t,a,":")
if ( a[3]>=20 ) {
printf(“%s”, $i)
}
else {
printf(“%s”, "./.")
}
}
printf("\n")
}