使用awk删除两行中包含字符串的行

时间:2016-12-20 13:08:33

标签: awk sed

我有这样的输入:

gi|88193823|ref|NC_007795.1|:3070-3370 gi|387601291|ref|NC_017333.1|:297226-297526 0.361403508772
gi|387601291|ref|NC_017333.1|:216167-216467 gi|88193823|ref|NC_007795.1|:2735510-2735810 0.386440677966
gi|88193823|ref|NC_007795.1|:1278679-1278979 gi|88193823|ref|NC_007795.1|:2735510-2735810 0.392491467577

我希望通过删除第1列和第2列中包含007795的行来输出

预期产出:

gi|88193823|ref|NC_007795.1|:3070-3370 gi|387601291|ref|NC_017333.1|:297226-297526 0.361403508772
gi|387601291|ref|NC_017333.1|:216167-216467 gi|88193823|ref|NC_007795.1|:2735510-2735810 0.386440677966

我试过

awk '! ( $1 == "/007795/" && $2 == "/007795/" )' 1.txt > 1.temp

我不知道自己哪里出错了。请帮帮我

1 个答案:

答案 0 :(得分:2)

您不需要双引号,因为您使用斜杠来分隔正则表达式文字,并且您需要使用正则表达式匹配而不是相等比较,因为您要测试字段是否包含字符串。该命令应如下所示:

awk '! ( $1 ~ /007795/ && $2 ~ /007795/ )' file