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是。你是对的。我编辑了答案以反映这一点。谢谢