我需要创建一个过滤器,可以过滤掉任何字符串:
- 少于 3 个字符
- 包含数字或符号(即任何不是拉丁字母表中的项目)
示例:输入文件:
5-hydroxy-3-methylglutaryl-coenzyme_a_reductase
5-hydroxytryptamine
a
a
a
aa
abaca
abo_antibodies
abradant
abrasive
输出文件:
abaca
abradant
abrasive
我一直在看 grep 选项:
grep -v [itemtoremove] [inputfile] > [outputfile]
这似乎可以解决问题。但是,它只单独删除每个项目,这意味着要从文件中删除我需要的所有内容,我必须不断运行此脚本。
有没有人有一个解决方案,以便我可以使用一个 grep(或其他更有效的命令行)过滤所有必要的内容?
更新的问题
下面有几个很好的解决方案可以解决这个问题。
但是,我想将其应用于具有 4 个制表符分隔列的输入文件。
我已经尝试了以下修改:
grep '^[a-z][a-z][a-z][a-z]-n$' input
现在输入如下:
a-n such_as-handheld-n 6.4623 A
abaca-n such_as-head-n 2.5586 A
abo_antibodies-n such_as-headphone-n 8.0794 A
abrasive-n such_as-healthcare-n 5.2845 A
function-n such_as-hearing-n 9.5367 A
我们想要以下输出:
abaca-n such_as-head-n 2.5586 A
abrasive-n such_as-healthcare-n 5.2845 A
function-n such_as-hearing-n 9.5367 A
有人可以告诉我修改后的 grep 哪里出错了吗?它输出我一个空白文件。谢谢!