AWK?在包含符号的每一行附加一个增量编号

ael*_*eli 5 awk grep sed

我有一个序列文件.

>seqA
lakjdsflakjsdlkjals;dkjfal;kdjsfl;aksdjf;lakjsdfl;kjalsdkjf
alsdkjfalskdjf;alsdfj;alkdjsf;lakjsdf;lkajsd
>seqB
fjal;kdjsfla;kdjsflkajdslkjfaghal;sdkjg
>seqC
a;lksdjl;akjsdg;lkjsdfl;kajdsl;kgj;alkdjsg;lkajsdgl
lsdkfja;lksdjf;lakdjsf;lkajsdfl;kjal;sdkfjal;skdjak
sdkjfal;ksdjflk;ahdglkahsdl;kghalk
Run Code Online (Sandbox Code Playgroud)

我想在每个">"之后添加一个递增的增量数字

例如:

输出文件:

>1seqA
lakjdsflakjsdlkjals;dkjfal;kdjsfl;aksdjf;lakjsdfl;kjalsdkjf
alsdkjfalskdjf;alsdfj;alkdjsf;lakjsdf;lkajsd
>2seqB
fjal;kdjsfla;kdjsflkajdslkjfaghal;sdkjg
>3seqC
a;lksdjl;akjsdg;lkjsdfl;kajdsl;kgj;alkdjsg;lkajsdgl
lsdkfja;lksdjf;lakdjsf;lkajsdfl;kjal;sdkfjal;skdjak
sdkjfal;ksdjflk;ahdglkahsdl;kghalk
Run Code Online (Sandbox Code Playgroud)

在浏览互联网后到目前为止,我尝试过:

awk -F "i=1" '{if (/>/){print $0i++} else print}'
Run Code Online (Sandbox Code Playgroud)

它没有做任何事情.我究竟做错了什么?

谢谢!

Joh*_*024 4

尝试:

awk '/>/{$0 = ">" ++i substr($0, 2)} 1'
Run Code Online (Sandbox Code Playgroud)

例如:

$ awk '/>/{$0 = ">" ++i substr($0, 2)} 1' file
>1seqA
lakjdsflakjsdlkjals;dkjfal;kdjsfl;aksdjf;lakjsdfl;kjalsdkjf
alsdkjfalskdjf;alsdfj;alkdjsf;lakjsdf;lkajsd
>2seqB
fjal;kdjsfla;kdjsflkajdslkjfaghal;sdkjg
>3seqC
a;lksdjl;akjsdg;lkjsdfl;kajdsl;kgj;alkdjsg;lkajsdgl
lsdkfja;lksdjf;lakdjsf;lkajsdfl;kjal;sdkfjal;skdjak
sdkjfal;ksdjflk;ahdglkahsdl;kghalk
Run Code Online (Sandbox Code Playgroud)

怎么运行的

  • />/{$0 = ">" ++i substr($0, 2)}

    这将选择包含 的行>。对于这些行,我们将行替换$0>后跟(这是变量递增后++i的值),后跟从第二个字符开始的当前行。i

  • 1

    这是 awk 的 print-the-line 的简写。