我有这样的输入:
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
我不知道自己哪里出错了。请帮帮我
答案 0 :(得分:2)
您不需要双引号,因为您使用斜杠来分隔正则表达式文字,并且您需要使用正则表达式匹配而不是相等比较,因为您要测试字段是否包含字符串。该命令应如下所示:
awk '! ( $1 ~ /007795/ && $2 ~ /007795/ )' file