Goo*_*gab 8 bash for bioinformatics
我有 120 个文件 (genomes.faa),每个文件之间都有标题
>GENOME1_00001 HYPOTHETICAL PROTEIN A
NQFTIAQSQVGLEDALLDL
>GENOME1_00002 HYPOTHETICAL PROTEIN B
NQFTIAQSQVGLEDALLDL
>GENOME1_00003 HYPOTHETICAL PROTEIN C
NQFTIAQSQVGLEDALLDL
etc.
Run Code Online (Sandbox Code Playgroud)
我试图删除名称后面的“_0000X”并将其替换为“|”
>GENOME1|HYPOTHETICAL PROTEIN A
NQFTIAQSQVGLEDALLDL
>GENOME1|HYPOTHETICAL PROTEIN B
NQFTIAQSQVGLEDALLDL
>GENOME1|HYPOTHETICAL PROTEIN C
NQFTIAQSQVGLEDALLDL
etc.
Run Code Online (Sandbox Code Playgroud)
我尝试这样做:
for file in *.faa
do
sed -r 's/_.*$/|/g' $file > $file.1
done
Run Code Online (Sandbox Code Playgroud)
这不会在之后保留“假设蛋白质 A”,从而导致
>ERR1156171|
MMRQSVQTVLP
Run Code Online (Sandbox Code Playgroud)
代替
>ERR1156171|HYPOTHETICAL PROTEIN A
MMRQSVQTVLP
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
Sot*_*oce 11
我认为你已经非常接近工作指挥了。这对我来说对你给出的几个例子很有用:
sed -E 's/_[0-9]+ /|/' "$file" > "$file.1"
Run Code Online (Sandbox Code Playgroud)
_.*
将_[0-9]+
匹配限制为仅下划线、数字和空格字符。$
因为它匹配行的末尾,而不是第一个单词的末尾。/g
为/
,因为您的示例在每一行中只有一个位置需要编辑,而不是多个位置。-E
正-r
则表达式,因为前者与其他版本的 sed 更兼容;并引用变量扩展,以防任何文件名包含空格或特殊字符。 归档时间: |
|
查看次数: |
1138 次 |
最近记录: |