我必须过滤多个列:
1) Column 5 should have the word "Cat" or "Dog"
2) Column 6 should be TRUE
3) Column 7 should be more than 7
我做了:
awk -F',' '$5~/Cat/ || $5~/Dog && $6=="TRUE" && $7>=7' cat.csv > catFinal.csv
我需要的是,在第一个条件的任何一部分成立之后,都应该应用下一个真正的条件。
我必须过滤多个列:
1) Column 5 should have the word "Cat" or "Dog"
2) Column 6 should be TRUE
3) Column 7 should be more than 7
我做了:
awk -F',' '$5~/Cat/ || $5~/Dog && $6=="TRUE" && $7>=7' cat.csv > catFinal.csv
我需要的是,在第一个条件的任何一部分成立之后,都应该应用下一个真正的条件。
The simple solution is to group the first two tests for
Cat
orDog
into a single regular expression so your total conditional is a 3-component AND, e.g.test1 && test2 && test3
. You can do that with:Which will ensure all aspects of the test are applied to each record. The conditionals are applied left-to-right, so as it was written, you would match any records where
$5~/Cat/
or records where$5~/Dog && $6=="TRUE" && $7>=7
were true.