我需要按照给定关键字文件中指定的顺序从 excel 文件 (.xls) 中提取包含行的关键字。例如,我有一个 excel 文件,即基因组.xls,如下所示,
NC_0208.1 18918 94692 amyl4_A0A0H 1 54 194
NC_0208.1 18839 86123 prot4_A0A0 1 79 137
NC_0208.4 29761 74985 lip10_H8FLU5 2 393 48
NC_0208.2 29687 67745 lysin6_A0A0Q5 5 38 49
我有一个关键字文件,即 id.txt,如下所示,
prot
lip
cellulase
lysin
amyl
预期的输出是
NC_0208.1 18839 86123 prot4_A0A0 1 79 137
NC_0208.4 29761 74985 lip10_H8FLU5 2 393 48
NC_0208.2 29687 67745 lysin6_A0A0Q5 5 38 49
NC_0208.1 18918 94692 amyl4_A0A0H 1 54 194
除此之外,如果基因组文件中没有关键字,则应在输出文件中将整行保留为空。为了做到这一点,我使用了 grep 命令如下,
grep 'prot\|lip\|cellulase\|lysin\|amyl' genome.xls > result.xls
上面提到的命令是提取包含整行的关键字,但是顺序已经改变。此外,它不会为丢失的关键词留下空行。因此,请帮助我做同样的事情。提前致谢。
尝试这个,
我认为您的要求需要对关键字进行循环。我会推荐以下 shell 脚本(尽管如果你愿意,你可以吸收到一个单行中):
通过循环你的内容
id.txt
可以保证输出的顺序。调用脚本
为了使脚本更加灵活,我们可以将要处理的文件设置为命令行参数,甚至是命令行参数列表:
这将遍历所有指定为命令行参数的文件(以及它
*.xls
)并将结果写入<input_filename>_result.xls
.但是请注意,这种语法有点初级,因为您不应该
*
在参数列表中将文件名规范与“globs”(即通配符,如 )和常规文件名混合使用。