使用 sed、awk 或 vim 删除以 + 开头的行中除 + 之外的所有内容

使用 sed、awk 或 vim 删除以 + 开头的行中除 + 之外的所有内容

我有一个 fastq 文件,我必须删除某些行中除第一个字符之外的所有内容。这是一个例子:

@A202BNABXX:2:1:4523:2219/1
GGCCGAATTCACCGATAAAATACACAGACGGTAAATGTTCCCACTAGGTTCACCTATGAGTCCGCTATGCCCGCCGGCATTTCAATTTCT
+ERR706845.1.1 A202BNABXX:2:1:4523:2219 length=90
@A202BNABXX:2:1:4715:2246/1
CTGAGGACTGCATGACATGGACTGATGCACTCTATAATCATTTTAATGCAATTGTCACTATTCATGAAATTGTGTAACTTACTAAATAGT
+ERR706845.2.1 A202BNABXX:2:1:4715:2246 length=90

加号位于 fastq 文件中行的开头。对于以该符号开头的每一行+,我需要删除其后的所有内容。然后我需要将输出重写到一个新文件中。任何建议将不胜感激。非常感谢!

答案1

使用sed

$ sed -E 's/^(\+).*/\1/' input_file > new_file
$ cat new_file
@A202BNABXX:2:1:4523:2219/1
GGCCGAATTCACCGATAAAATACACAGACGGTAAATGTTCCCACTAGGTTCACCTATGAGTCCGCTATGCCCGCCGGCATTTCAATTTCT

+

@A202BNABXX:2:1:4715:2246/1
CTGAGGACTGCATGACATGGACTGATGCACTCTATAATCATTTTAATGCAATTGTCACTATTCATGAAATTGTGTAACTTACTAAATAGT

+

相关内容