我已经完成了以下参数 shell 扩展:
trihead="$(cat ../FASTA_SEC/"$i".fa)"
echo "${trihead#"${trihead%%[!A]*}"}" > ../FASTA_SEC/"$i".fa
我想修剪 fasta 文件第二行的前导 A(一种纯文本格式 .fa)
输入将类似于:
>B4-0K032_18670_015
AAAAAAANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNGNNNTAGATACAAGCGAGCGGC
我希望输出如下:
>B4-0K032_18670_015
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNGNNNTAGATACAAGCGAGCGGC
顺便问一下,有人知道 shell 参数扩展的某些方面得到了很好的解释吗?
答案1
将前导连续A
s 从第二文件的一行(然后用结果替换原始文件):
$ sed '2s/^A*//' data.fa >data.out && mv data.out data.fa
在此示例中,该sed
命令专门将替换命令 ( ) 应用于第 2 行。s
它将A
把行开头的任意数量的 s 替换为空。
该模式^A*
的意思是“匹配行( ) 开头的*
单个字符的零个或多个 ( )”。A
^
我不使用sed -i
(“就地编辑”)的原因是该标志在实现-i
之间非常不可移植。sed
答案2
这将从A
以 开头的行后面的行中删除所有前导 s >
:
sed '/^>/n;s/^A*//' /path/to/file
如果输出是您想要的,并且您想编辑原始文件,请使用:
sed --in-place '/^>/n;s/^A*//' /path/to/file