1

抱歉,如果 AWK 无法做到这一点,但这是我可以用 AWK 想到的。

我有一个 CSV 文件(制表符分隔),它有大约 10 列和一个大标题部分。内容是这样的:

col1 col2 col3 col4 col5 col6 col7 col8 col9 col10

我不需要按 col1-9 过滤,只需要逐行查看 col10。col10每一行的内容是这样的

int1/int2: int3,int4: int5: int6

我的过滤条件是:if int3 + int4 >= 30,我将其打印到一个新的csv文件中,否则将其过滤掉(不打印)。

这可能与 AWK 结合 shell 脚本(逐行阅读?)有关吗?非常感谢您阅读我的问题

4

1 回答 1

4

尝试这个

awk -F'\t' -v OFS='\t' '{ t = $10
split(t,x,":")
split(x[2],a,",")
}(a[1]+a[2])>=30' oldcsv > newcsv

或更短:

awk -F'\t' -v OFS='\t' '{t=$10; split(t,a,/[:,]/)}(a[3]+a[2])>=30' oldcsv > newcsv

没有测试,但应该可以工作,如果 $10 的格式是固定的。

于 2013-08-14T23:51:00.397 回答