我有一个序列文件.
>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)
它没有做任何事情.我究竟做错了什么?
谢谢!
尝试:
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 的简写。