编辑:添加块引号文本
我有一个由标签分隔的文本文件(acc.paired.txt),其中包含了illumina示例名(head):
SRR10598163_R1.fastq.gz SRR8916417_R2.fastq.gz
SRR10598049_R1.fastq.gz SRR10598163_R2.fastq.gz SRR8916418_R1.fastq.gz
SRR10598049_R2.fastq.gz SRR10598164_R1.fastq.gz SRR8916418_R2.fastq.gz
SRR10598050_R1.fastq.gz SRR10598164_R2.fastq.gz SRR8916419_R1.fastq.gz
SRR10598050_R2.fastq.gz SRR10598165_R1.fastq.gz SRR8916419_R2.fastq.gz
SRR10598051_R1.fastq.gz SRR10598165_R2.fastq.gz SRR8916420_R1.fastq.gz
SRR10598051_R2.fastq.gz SRR10598166_R1.fastq.gz SRR8916420_R2.fastq.gz
SRR10598052_R1.fastq.gz SRR10598166_R2.fastq.gz SRR8916421_R1.fastq.gz
SRR10598052_R2.fastq.gz SRR10598167_R1.fastq.gz SRR8916421_R2.fastq.gz
SRR10598053_R1.fastq.gz SRR10598167_R2.fastq.gz SRR8916422_R1.fastq.gz
SRR10598053_R2.fastq.gz SRR10598168_R1.fastq.gz SRR8916422_R2.fastq.gz
SRR10598054_R1.fastq.gz SRR10598168_R2.fastq.gz SRR8916423_R1.fastq.gz我想做两个更改,1)删除重复的示例名称,2)删除特定示例名称之后的所有字符。我的目标输出是一个标签分隔的文本文件,它只包含没有重复的SRR###数字(没有_R#.fastq.qz)。示例目标输出:
SRR10598163
SRR8916417
SRR10598049
SRR8916418
SRR10598164
SRR10598050
SRR8916419
SRR10598165
SRR10598051
SRR8916420
SRR10598166
SRR10598052
SRR8916421
SRR10598167
SRR10598053
SRR8916422
SRR10598054
SRR10598168
SRR8916423我转向sed删除字符模式:
`sed 's| _R1.fastq.gz||g' acc.paired.txt > out.txt`但out.txt无明显变化。
蒂娅。
发布于 2023-05-22 18:51:16
你可以
tr将所有空格更改为换行符_R1.fastq.gz和sed匹配的所有内容grep删除空行sort删除重复项:% < acc.paired.txt tr ' ' '\n' | sed -e 's/_R.\.fastq\.gz//' | grep . | sort -u
SRR10598049
SRR10598050
SRR10598051
SRR10598052
[...]除了排序之外,输出结果与您的问题中显示的相同。
当然,在regexes中,.匹配任何字符,并且文字点与\.匹配。grep .只保留至少包含一个字符的行,这样就失去了tr从背靠背空间创建的空行。这还假设只有R1,R9在那里,而不是R11左右。
https://unix.stackexchange.com/questions/746670
复制相似问题