-2

我有一个这样的文件(由 \t 分隔):

gene1 previous name1
gene2 previous name2
gene3 previous name3
gene4 previous name4

我想删除第一列中包含gene2gene4的列。我知道我可以使用sedawk|搜索多个模式。但实际上我的文件有数千行,我想删除数百列(我有一个变量,其中包含我想要搜索的模式)。我怎样才能做到这一点而不必手动编写所有模式?

模式变量:

gene2
gene4

预期输出:

gene1 previous name1
gene3 previous name3

我只想 grep 第一列,因为单词gene2(或*gene4)可能在第三列中。

4

1 回答 1

2

使用grep

cat > in_file <<EOF
gene1 previous name1
gene2 previous name2
gene3 previous name3
gene4 previous name4
EOF

cat > pat_file <<EOF
gene2
gene4
EOF

grep -v -f pat_file in_file

输出:

gene1 previous name1
gene3 previous name3

在这里,grep使用以下选项:
-v:打印匹配的行。:从文件
-f file中获取模式,每行一个。

于 2021-01-25T19:35:07.480 回答