我想在第一列或第二列(分隔符\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 EBI
和sed "numberOfLined" file1 >file2
但是我有很多事情发生,所以我不想手工编写所有行数。
答案 0 :(得分:0)
您可以通过if
使用~
语句和正则表达式匹配:
awk -F '\t' '{if (! (($1 ~ ".*EBI.*") || ($2 ~ ".*EBI.*"))) {print $0} }'
感谢评论,它看起来会更好:
awk '!($1~/EBI/ || $2~/EBI/)'