如何根据列的匹配条件拆分文件?

时间:2015-08-03 12:30:43

标签: bash awk

我知道通过使用:

awk '($18 ~ 0)' file > match

我得到所有在第18场都有0的线。因此,我试图实现相同的逻辑来分割文件,因为它的第18个字段是否为“0”:

awk -F, '{ if ($18 ~ 0) print > "match"; else print > "not_match"}' file

但是不起作用,“匹配”上没有打印任何行。

我做错了什么?你知道在bash中这样做的其他方法吗?

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

这是根据字段值有条件地分割文件行的最小完整示例:

[me@host]$ cat > /tmp/blah
0 Yes
1 No
1 No
0 Yes
1 No
[me@host]$ awk '($1 ~ 0) { print > "/tmp/match"; next } { print > "/tmp/non_match" }' /tmp/blah
[me@host]$ cat /tmp/match
0 Yes
0 Yes
[me@host]$ cat /tmp/non_match
1 No
1 No
1 No