2015-08-03 69 views
0

我知道,通过使用:如何基于列的匹配条件拆分文件?

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

我得到的一切在18日现场有0行。因此,我试图执行相同的逻辑分割基于文件阉第18字段有一个“0”与否:

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

但不工作,没有线被印刷在“匹配”。

我在做什么错?你知道其他方式在bash中做到这一点吗?

谢谢你的时间!

+0

无法重现。如果您在控制台上进行打印而不是将其重定向到文件,它会起作用吗? –

+0

为我工作的行在文件'匹配'和'not_match' – amdixon

+0

你能提供一行数据,你认为应该坐在“匹配”但不是? – Kent

回答

1

这里的拆分文件的有条件基于字段值线的最小完整的例子:

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

这是如何回答OP的问题:'我在做什么错?' – Kent

+0

@Kent :这回答了OP的标题问题:“如何根据列的匹配条件拆分文件?” – MattH

+0

true。但海事组织,你的解决方案与OP所尝试的没有什么不同。对? – Kent