使用awk逐行处理csv(制表符分隔)

时间:2013-08-14 23:37:49

标签: shell csv awk line

抱歉,如果用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脚本结合使用(逐行读取?)?非常感谢您阅读我的问题

1 个答案:

答案 0 :(得分: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美元的格式是固定的,那么应该可行。