/,/^\>*$/{d}' file.txt这不起作用,我找到的原始代码是:sed -i.bak '">
我有多个txt格式的数据集,其中有一个可预测的内容。我正在尝试删除第一组行。第一行从>*chromosome
开始,我想删除>*plasmid
之前的所有内容。我可以告诉它删除>
中的所有内容,直到它再次遇到它,或者删除第一个>
和第二个>
之间的所有内容。我一直在尝试这样的东西:
sed -i.bak '/>/,/^\>*$/{d}' file.txt
这不起作用,我找到的原始代码是:
sed -i.bak '/>/,/^\s*$/{d}' file.txt
发布于 2021-02-24 15:51:50
使用此Perl一行程序:
perl -0777 -pe 's{^>chromosome.*(?=^>plasmid)}{}sm' in.fasta
示例:
# Create example input file:
cat > in.fasta <<EOF
>foo
TCGA
>chromosome
ACGT
>plasmid
CGTA
EOF
perl -0777 -pe 's{^>chromosome.*(?=^>plasmid)}{}sm' in.fasta > out.fasta
以out.fasta
格式输出
>foo
TCGA
>plasmid
CGTA
Perl单行程序使用以下命令行标志:
-e
:告诉Perl查找内联代码,而不是文件中的代码。
-p
:每次循环一行输入,默认情况下将其赋给$_
。在每次循环迭代后添加print $_
。
-0777
:对整个文件进行Slurp。
正则表达式使用以下修饰符:
/m
:允许多行匹配。
/s
:允许.
匹配换行符。
^>chromosome.*(?=^>plasmid)
:匹配>chromosome
开始的正则表达式从行首开始,后跟0个或更多字符,并在(但不包括)与行首的>plasmid
匹配时结束。表达式(?=PATTERN)
是长度为零的正向先行。
另请参阅:
perldoc perlrun
: how to execute the Perl interpreter: command line switches
https://stackoverflow.com/questions/66350421
复制相似问题