2015-08-03 70 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