也许我的头衔无法完全解释我的意图。 我有一个如下数据列表:
@HWI-ST150_0129:3:8:21208:93107#0/1
TGTCTAGTTTTTATAGGAAGATATTTCCTTTTCTACCTTTGACTTCAAAGCGGCTGAAATCTCCACTTGCAAATTCCACAAAAAGAGTGTTACAAGTCT
+
Yeeeeeeeeeceed]dddddd^YdceeeedaeeddYccccc\ddceeYeYY`[`bcYc^_XY^_]d^dd`abdddee\e\ddLb]`_`cTbbbYbaM_]
@HWI-ST150_0129:3:8:21208:93107#0/2
TTTGTAAAGTCTGCACGTGGATAACTTGACCACTTAGAGGCCTTCGTTGGAAACGGGTTTTTTTCATGTAAGGCTAGACAGAAGAATTCTCAGTAACTTCAAGTTACTGAGAATTCTTCTGTCTAGCCTTACATGAAAAAAACCCGTTTCCAACGAAGGCCTCTAAGTGGTCAAGTTATCCACGTGCAGACTTTACAAA
+
ffcaefffcdeeeeeeeeeedff^f`\\eeedaec^d^d`deaffeeTecb^bbbddadYcccW[X\MZ\XaU_UTI\]TZ]K[VQX^aIb`b`^X^YSYHWI-ST150_0129:3:8:21208:93107#0
我们可以看到第一行和第五行都是头部/名称,但以#0/1或#0/2结尾。现在我希望将每4行分组,但稍后将所有#0/1和#0/2合并在一起。
应该像:
@HWI....#0/1
TTCCGC
+
cffccc
@HWI....#0/1
CCGGGG
+
abbcgg
....
另一个文件是: @HWI ....#0/1 ATTCCG + fccfcc @HWI ....#0/1 CGCCGG + gbbcaa
我知道如何使用简单的python脚本执行此操作。但只是想知道我们是否只能使用一些非常简单的bash代码? 感谢
答案 0 :(得分:3)
sed -n '1,${p;n;n;n;}'
应该有助于获得每一行:
[ 11:32 jon@hozbox.com ~/SO/bash ]$ cat blah | sed -n '1,${p;n;n;n;}'
@HWI-ST150_0129:3:8:21208:93107#0/1
@HWI-ST150_0129:3:8:21208:93107#0/2
[ 11:33 jon@hozbox.com ~/SO/bash ]$ cat blah
@HWI-ST150_0129:3:8:21208:93107#0/1
TGTCTAGTTTTTATAGGAAGATATTTCCTTTTCTACCTTTGACTTCAAAGCGGCTGAAATCTCCACTTGCAAATTCCACAAAAAGAGTGTTACAAGTCT
+
Yeeeeeeeeeceed]dddddd^YdceeeedaeeddYccccc\ddceeYeYY`[`bcYc^_XY^_]d^dd`abdddee\e\ddLb]`_`cTbbbYbaM_]
@HWI-ST150_0129:3:8:21208:93107#0/2
TTTGTAAAGTCTGCACGTGGATAACTTGACCACTTAGAGGCCTTCGTTGGAAACGGGTTTTTTTCATGTAAGGCTAGACAGAAGAATTCTCAGTAACTTCAAGTTACTGAGAATTCTTCTGTCTAGCCTTACATGAAAAAAACCCGTTTCCAACGAAGGCCTCTAAGTGGTCAAGTTATCCACGTGCAGACTTTACAAA
+
ffcaefffcdeeeeeeeeeedff^f`\\eeedaec^d^d`deaffeeTecb^bbbddadYcccW[X\MZ\XaU_UTI\]TZ]K[VQX^aIb`b`^X^YSYHWI-ST150_0129:3:8:21208:93107#0
答案 1 :(得分:0)
我不确定我是否理解你,但是使用GNU sed获得每一行都是微不足道的:
sed '1~4!d' file
至group
四行,我认为你的意思是将4行减少为一行:
sed '/#0\/[12]$/{N;N;N;s/\n//;d}' file
这使用您在上面提到的正则表达式,即以#0/1
或#0/2