打印每一行但有条件地只打印某些行的片段

打印每一行但有条件地只打印某些行的片段

我有一个如下所示的文本文件:

   rno-miR-344-5p
   miRPlus_11239/mmu-miR-383/rno-miR-383
   hsa-miR-301a/mmu-miR-301a/rno-miR-301a
   hsa-miR-199a-3p/hsa-miR-199b-3p/mmu-miR-199a-3p/mmu-miR-199b/rno-miR-199a-3p
   Empty
   Hy3
   rno-miR-1

   rno-miR-598-5p
   spike_control_h

   Empty

我想打印每一行。但是对于包含 hsa-miR-301a/mmu-miR-301a/rno-miR-301a 的行,我只想打印 rno-miR-etc 部分。

我一直尝试使用 awk 来做到这一点但却力不从心。

答案1

假设斜线仅出现在您要定位的行上:

awk -F/ '{print $NF}' file

将仅打印最后一个以斜线分隔的字段。在没有斜线的行上,字段 1 也是最后一个字段。

如果您专门针对以 开头的行hsa-miR,那么:

awk -F/ '/^hsa-miR/ {print $NF; next} {print}' file

相关内容