删除第一列或第二列中包含事件的行

时间:2014-05-15 15:54:38

标签: awk sed

我想在第一列或第二列(分隔符\t)中删除包含出现的行。例如:

line 1  uni:1 uni:2 blabla blabla

line 2  uni:3 EBI:1 blbla blabla

我想删除line2。 " blabla"文本可以包含出现(EBI),但我不想通过文本的其余部分选择,只需要使用两个第一列。

我尝试:awk -F "\t" '{print $1 $2}' file1 |grep -v EBI > file2 但这只会存储第一列和第二列,而不是整行。

我也试过这个:awk -F "\t" '{print $1 $2}'file1 |grep -n EBIsed "numberOfLined" file1 >file2

但是我有很多事情发生,所以我不想手工编写所有行数。

1 个答案:

答案 0 :(得分:0)

您可以通过if使用~语句和正则表达式匹配:

awk -F '\t' '{if (! (($1 ~ ".*EBI.*") || ($2 ~ ".*EBI.*"))) {print $0} }'

感谢评论,它看起来会更好:

awk '!($1~/EBI/ || $2~/EBI/)'