我有一个带有不同线条的大文件。
我感兴趣的线条看起来很相似:
lcl|NC_005966.1_gene_59 scaffold441.6 99.74 390 1 0 1 390 34065 34454 0.0 715
lcl|NC_005966.1_gene_59 scaffold2333.4 89.23 390 42 0 1 390 3114 2725 1e-138 488
lcl|NC_005966.1_gene_60 scaffold441.6 100.00 186 0 0 1 186 34528 34713 1e-95 344
现在我想得到模式'lcl | NC_'之后的行,但只是第三个单词(或行中的第n个单词)小于100.
(在这种情况下前两行,因为他们只得到了99.74和89.23的数字)
接下来,他们应该保存到一个新文件中。
答案 0 :(得分:3)
这可以做到:
$ awk '$1 ~ /^lcl\|NC_/ && $3<100' file
lcl|NC_005966.1_gene_59 scaffold441.6 99.74 390 1 0 1 390 34065 34454 0.0 715
lcl|NC_005966.1_gene_59 scaffold2333.4 89.23 390 42 0 1 390 3114 2725 1e-138 488
检查两件事:
- 以lcl|NC_
开头的第一个字段:$1 ~ /^lcl\|NC_/
执行此操作。 (Thanks Ed Morton for improving之前的$1~"^lcl|NC_"
)
- 第3个字段<100:$3<100
。
要保存到文件中,您可以执行以下操作:
awk '$1 ~ /^lcl\|NC_/ && $3<100' file > new_file
^^^^^^^^^^