【发布时间】:2018-06-26 21:14:41
【问题描述】:
我有一个文件,其中的记录如下所示:
nad9
abie_by_ctai_prots contig_4729 808, 1393 1,196 abie_by_ctai_prots_1_196
abie_by_wmir_prots contig_4729 811, 1363 2,187 abie_by_wmir_prots_2_187
abie_by_gbil_prots contig_4729 808, 1393 1,196 abie_by_gbil_prots_1_196
abie_by_atha_prots contig_4729 808, 1363 1,186 abie_by_atha_prots_1_186
ND2
abie_by_ctai_prots contig_1280 9618, 11661 0,182 abie_by_ctai_prots_0_182
abie_by_ctai_prots contig_9528 770, 959 427,490 abie_by_ctai_prots_427_490
abie_by_ctai_prots contig_6628 5874, 2217 182,429 abie_by_ctai_prots_182_429
ccmB
abie_by_ctai_prots contig_334 39851, 39218 0,212 abie_by_ctai_prots_0_212
abie_by_wmir_prots contig_334 39842, 39218 2,211 abie_by_wmir_prots_2_211
abie_by_gbil_prots contig_334 39851, 39218 0,212
我想根据基因名称(记录的第一行)对记录进行排序。
输出应如下所示:
ND2
abie_by_ctai_prots contig_1280 9618, 11661 0,182 abie_by_ctai_prots_0_182
abie_by_ctai_prots contig_9528 770, 959 427,490 abie_by_ctai_prots_427_490
abie_by_ctai_prots contig_6628 5874, 2217 182,429 abie_by_ctai_prots_182_429
ccmB
abie_by_ctai_prots contig_334 39851, 39218 0,212 abie_by_ctai_prots_0_212
abie_by_wmir_prots contig_334 39842, 39218 2,211 abie_by_wmir_prots_2_211
abie_by_gbil_prots contig_334 39851, 39218 0,212 abie_by_gbil_prots_0_212
nad9
abie_by_ctai_prots contig_4729 808, 1393 1,196 abie_by_ctai_prots_1_196
abie_by_wmir_prots contig_4729 811, 1363 2,187 abie_by_wmir_prots_2_187
abie_by_gbil_prots contig_4729 808, 1393 1,196 abie_by_gbil_prots_1_196
abie_by_atha_prots contig_4729 808, 1363 1,186 abie_by_atha_prots_1_186
我试过这段代码没有成功:vilde$ awk '{ RS = ""; FS = "\n"} {print $0}' |sort filename.txt
它给我的输出看起来类似于:
(empty line)
(empty line)
(empty line)
abie_by_ctai_prots contig_4729 808, 1393 1,196 abie_by_ctai_prots_1_196
abie_by_wmir_prots contig_4729 811, 1363 2,187 abie_by_wmir_prots_2_187
abie_by_gbil_prots contig_4729 808, 1393 1,196 abie_by_gbil_prots_1_196
abie_by_atha_prots contig_4729 808, 1363 1,186 abie_by_atha_prots_1_186
ND2
ccmB
nad9
在我看来,它是对字段而不是记录进行排序,但我不明白为什么或如何改变这一点。
【问题讨论】:
-
sort对行进行排序。我不确定你想在这里用awk做什么。 -
我对此完全不感兴趣,所以我可能会以错误的方式处理这个问题。我是否可以临时替换所有新行以使每条记录都放在一行上。这样我可以使用排序吗?
-
如果输入不是太大,我会做类似
perl -00 -e 'print sort readline'的事情。
标签: awk text-processing