这是我要编辑的文件的摘录:
>chr1|-|9|S|somatic ACCACAGCCCTGTTTTACGTTGCGTCATCGCCCCGGGTGCCTGGTGACGTCACCAGCCCGCTCG >chr1|+|9|Y|somatic ACCACAGCCCTGTTTTACGTTGCGTCATCGCCCCGGGTGCCTGGTGACGTCACCAGCCCGCTCG我将在一个新的文本文件中,在">“和”体“或"germline”之后添加一个换行符,在R或Unix中如何做?
预期产出:
>chr1|-|9|S|somatic
ACCACAGCCCTGTTTTACGTTGCGTCATCGCCCCGGGTGCCTGGTGACGTCACCAGCCCGCTCG
>chr1|+|9|Y|somatic
ACCACAGCCCTGTTTTACGTTGCGTCATCGCCCCGGGTGCCTGGTGACGTCACCAGCCCGCTCG发布于 2014-11-12 12:50:36
根据输入的外观,您可以简单地用换行符替换空格:
tr -s ' ' '\n' <infile >outfile(一些tr方言不喜欢\n。尝试'\012'或文字换行符:开始引号、换行符、结尾引号。)
如果这样做不起作用,您可以很容易地在sed中做到这一点。如果somatic是静态的,只需硬编码它:
sed -e 's/somatic */&\n/g' -e 's/ >/\n>/g' file >newfile关于不同的sed方言的通常的警告是适用的。有些版本不喜欢换行的\n,有些版本想要换行符或分号,而不是多个-e参数。
在Linux上,您可以就地修改文件:
sed -i 's/somatic */&\
/g
s/ >/\
/g' file(对于变体,如果您的sed不识别\n,但允许文字换行符,我将向您展示如何做到这一点,以及如何将脚本放在一个多行字符串中。)
在*BSD (包括MacOS)中,您需要始终向-i添加一个参数;sed -i '' ...
如果somatic是可变的,但您总是希望替换楔形之后的第一个空格,请尝试如下
sed 's/\(>[^ ]*\) /\1\n/g'>[^ ]匹配一个楔形,后面跟着零个或多个非空格字符。括号将匹配的字符串捕获到\1中。同样,一些sed变体不希望在圆括号前面出现反斜杠,或者只是.不一样。
如果您有很长的行,您可能会遇到一个有问题的sed。也许可以试试Perl。(幸运的是,没有方言可担心!)
perl -i -pe 's/(>[^ ]*) /$1\n/g;s/ >/\n>/g' file(如果不想修改输入文件,请跳过-i选项。则输出将为标准输出。)
发布于 2014-11-12 10:56:17
(\bsomatic\b|\bgermline\b)|(?=>)试试this.See demo.Replace by $1\n
http://regex101.com/r/tF5fT5/53
如果没有前瞻性的支持,那么尝试
(\bsomatic\b|\bgermline\b)尝试this.Replace by $1\n.See演示。
http://regex101.com/r/tF5fT5/50
和
(>)代之以\n$1.See演示。
http://regex101.com/r/tF5fT5/51
发布于 2014-11-14 12:51:04
谢谢大家!我用:
tr -s ' ' '\n' <infile >outfile正如tripleee所建议的那样,它运行得非常完美!
https://stackoverflow.com/questions/26885205
复制相似问题