我正在使用序列数据,但我愚蠢的找不到在使用awk而不以“ ”开头的行.
中用“ X
”替换“ ”的正确方法>
。我真的需要使用awk而不是sed。
我已经走了这么远,但全都是“。” 以此方式替换:
awk '/^>/ {next} {gsub(/\./,"X")}1' Sfr.pep > Sfr2.pep
子数据示例:
>sequence.1
GTCAGTCAGTCA.GTCAGTCA
结果我想得到:
>sequence.1
GTCAGTCAGTCAXGTCAGTCA
这样做似乎更自然sed
:
sed '/^>/!y/./X/' Sfr.pep >Sfr2.pep
这将与^>
当前行匹配(“此行是否以>
字符开头?”)。如果该表达式并不匹配,则该y
命令用于改变各点在该行X
。
测试:
$ cat Sfr.pep
>sequence.1
GTCAGTCAGTCA.GTCAGTCA
$ sed '/^>/!y/./X/' Sfr.pep >Sfr2.pep
$ cat Sfr2.pep
>sequence.1
GTCAGTCAGTCAXGTCAGTCA
awk
代码的主要问题是,next
每当遇到fasta标头行时,就会执行该代码。这意味着您的代码仅产生序列数据,而没有标题。虽然该序列数据应该看起来还可以,但这并没有太大帮助。
简单地否定测试并丢弃next
块(或之前的next
带print
)将解决它在awk
你,但,这是我个人的看法,使用y
命令sed
比使用更优雅gsub()
(或s///g
中sed
)音译为单个字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句