awk使用if条件删除所有不包含子字符串的行

时间:2015-08-18 19:42:25

标签: shell awk

我想删除第一列不包含子串' cat'的行。 因此,如果col 1中的字符串是' caterpillar',我想保留它。

awk -F"," '{if($1 != cat) ... }' file.csv

我该怎么做呢?

3 个答案:

答案 0 :(得分:2)

  

我想删除第一列不包含子串'cat'

的行

这个问题可以解决这个问题:

awk -F, '!index($1, "cat")' file.csv

如果这不起作用,那么我建议您提供相关的样本输入和预期输出。

答案 1 :(得分:1)

这个awk也做了这个工作

awk -F, '$1 ~ /cat/{print}' file.csv

<强>解释

-F:&#34; Delimiter&#34;

$1 ~ /cat/:匹配字段1中的模式cat

{print}:打印

答案 2 :(得分:1)

较短的命令是:

awk -F, '$1 ~ "cat"' file.csv

-F是字段分隔符:(,)

$1 ~ "cat"是一个(未锚定的)正则表达式匹配,在任何位置匹配。

由于没有给出任何动作,默认值为:{print}由awk承担。