Awk 匹配第1行中的图案,如果是,则打印第2行

Awk 匹配第1行中的图案,如果是,则打印第2行,awk,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个点击,我只需要用一个选项卡打印第二行的第一列 例如,在此文件中,我将获得: # 23

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

# 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个点击,我只需要用一个选项卡打印第二行的第一列

例如,在此文件中,我将获得:

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

awk '/# 23 hits found/' microns_seq1 
使用awk代码创建一个文件(awk0)

/# 23 hits found/ { got_cnt = $0 next} got_cnt != "" { print got_cnt $1 got_cnt = ""}` /#找到23次点击/{got_cnt=$0 下一个} 明白了“{打印得到\u cnt$1 得到_cnt=“”}` 然后运行:
awk-f awk0微米

祝你好运

此awk应能工作:

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

做一些插值,不要逐字逐句地回答你的问题,我想你可能想要:

$ 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

BEGIN
块在这里是多余的。@sudo\u O是。你是对的。我编辑了答案以反映这一点。谢谢