第1行匹配模式,如果是,则打印第2行

时间:2013-07-30 18:40:22

标签: awk

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

# 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 

3 个答案:

答案 0 :(得分:0)

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

/# 23 hits found/ { got_cnt = $0
                    next}
got_cnt != ""     { print got_cnt $1
                    got_cnt = ""}`

然后运行: awk -f awk0 microns_seq1

祝你好运!

答案 1 :(得分:0)

这个awk应该可以工作:

awk '/^# [0-9]+ hits found$/{l=$0; getline; print l "\t" $1}' file

答案 2 :(得分: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