我有一个如下所示的文本文件:
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