0

我有一个包含以下内容的文件:

# 23 hits found
A_246   sme-miR-752-3p  100.00  12  0   0   1   12  6   17  0.14    23.3
--
# 16 hits found
A_699   bmo-miR-3326    100.00  10  0   0   4   13  6   15  1.9     19.6

如果第一行有,# 23 hits found 我只需要使用制表符打印第二行的第一列。

例如在这个文件中我会得到:

# 23 hits found A_246

我尝试了以下命令,但是我不太明白如何打印第二行第一列:

awk '/# 23 hits found/' microns_seq1 
4

3 回答 3

0

做一些插值而不是从字面上理解你的问题,我认为你可能想要:

$ awk 'f{print $1;f=0}/# [0-9]+ hits found/{printf "%s\t",$0;f=1}' file
# 23 hits found     A_246
# 16 hits found     A_699
于 2013-07-30T19:04:56.170 回答
0

使用 awk 代码创建一个文件 (awk0)。

/# 找到 23 个匹配项/ { got_cnt = $0
                    下一个}
got_cnt != "" { 打印 got_cnt $1
                    got_cnt = ""}`

然后运行: awk -f awk0 microns_seq1

祝你好运!

于 2013-07-30T18:57:16.023 回答
0

这个 awk 应该可以工作:

awk '/^# [0-9]+ hits found$/{l=$0; getline; print l "\t" $1}' file
于 2013-07-30T19:00:04.440 回答