我有一个超过 10,000 行的文件:
head samples
https://genomequebec.mcgill.ca/nanuqMPS/readSetMd5Download/id/192170/type/READ_SET_FASTQ/filename/HI.2613.007.Custom_0022.ED9_SD2A27-1_180_R1.fastq.gz.md5
https://genomequebec.mcgill.ca/nanuqMPS/readSetMd5Download/id/192170/type/READ_SET_FASTQ_PE/filename/HI.2613.007.Custom_0022.ED9_SD2A27-1_180_R2.fastq.gz.md5
https://genomequebec.mcgill.ca/nanuqMPS/readSetMd5Download/id/192171/type/READ_SET_FASTQ/filename/HI.2613.007.Custom_0021.ED4_KS1A29-7_338_R1.fastq.gz.md5
https://genomequebec.mcgill.ca/nanuqMPS/readSetMd5Download/id/192171/type/READ_SET_FASTQ_PE/filename/HI.2613.007.Custom_0021.ED4_KS1A29-7_338_R2.fastq.gz.md5
https://genomequebec.mcgill.ca/nanuqMPS/readSetMd5Download/id/192168/type/READ_SET_FASTQ/filename/HI.2613.007.Index_18.ED17_MO1A26-7_353_R1.fastq.gz.md5
https://genomequebec.mcgill.ca/nanuqMPS/readSetMd5Download/id/192168/type/READ_SET_FASTQ_PE/filename/HI.2613.007.Index_18.ED17_MO1A26-7_353_R2.fastq.gz.md5
https://genomequebec.mcgill.ca/nanuqMPS/readSetMd5Download/id/192169/type/READ_SET_FASTQ/filename/HI.2613.007.Index_14.ED14_IA2A35-2_310_R1.fastq.gz.md5
我只想打印以“HI.*”开头的每一行的一部分
这是我想要的输出:
HI.2613.007.Custom_0022.ED9_SD2A27-1_180_R1.fastq.gz
HI.2613.007.Custom_0022.ED9_SD2A27-1_180_R2.fastq.gz
HI.2613.007.Custom_0021.ED4_KS1A29-7_338_R1.fastq.gz
HI.2613.007.Custom_0021.ED4_KS1A29-7_338_R2.fastq.gz
HI.2613.007.Index_18.ED17_MO1A26-7_353_R1.fastq.gz
HI.2613.007.Index_18.ED17_MO1A26-7_353_R2.fastq.gz
使用
awk
要删除
.md5
后缀,您可以执行以下操作:在 中
awk
,the$0
指的是整行/记录,而$1
,$2
,$3
, ... 分别指第一,第二,第三,...;并$NF
引用最后一个字段,因此$(NF-1)
是倒数第二个字段。awk中的 tild
~
运算符将右侧运算符视为(扩展)正则表达式匹配,将左侧操作数视为字符串string ~ /regular-expression/
sed
解决方案:这
/\([^/]*\)\.md5
匹配最后一个斜杠后跟除以 . 结尾的斜杠之外的任何内容.md5
。我们采用\([^/]*\)
(最后一个斜杠和.md5
作为组匹配之间的所有内容,并在替换部分中仅打印它及其后向引用\1
。这
/^HI\./!d
会删除不是从上一个命令HI.
的结果开始的行。sed
我们使用了不同的
sed
定界符:
,因为我们在输入中有特殊/
字符。尝试这个,
HI
.md5
输出