Eu tenho um arquivo com mais de 10.000 linhas:
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
Desejo imprimir apenas parte de cada linha que começa com "HI.*"
Esta é a minha saída desejada:
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
Usando
awk
para remover o
.md5
sufixo, você pode fazer:em
awk
, o$0
está se referindo a toda a linha/registro e$1
,$2
,$3
, ... estão se referindo ao primeiro, segundo, terceiro, ... respectivamente; e$NF
referindo-se ao último campo e, portanto,$(NF-1)
é o penúltimo campo.o
~
operador til em awk trata o operador do lado direito como correspondência de expressão regular (estendida) com o operando do lado esquerdo como stringstring ~ /regular-expression/
A
sed
solução:isso
/\([^/]*\)\.md5
corresponde à última barra seguida de qualquer coisa, mas não de uma barra que termine com.md5
. Pegamos\([^/]*\)
(tudo entre a última barra e.md5
como uma partida de grupo e imprimimos apenas isso na parte de substituição com sua referência inversa\1
.isso
/^HI\./!d
exclui as linhas que não começam comHI.
o resultado dosed
comando anterior.usamos
sed
delimitador diferente:
, pois temos/
caracteres especiais na entrada.Tente isso,
HI
.md5
Resultado