Sed 在文本文件中的每n:th行前添加文本

Sed 在文本文件中的每n:th行前添加文本,sed,bioinformatics,Sed,Bioinformatics,此sed comandline脚本在文件中的每一行上预先添加文本: sed -i 's/^/to be prepended/g' text.txt 我怎样才能使它只在第n行上这样做 我正在处理排序数据,在“norma”多重fasta格式中,首先有一个以>开头的标识符行,然后有额外的文本 下一行以一个随机DNA序列开始,如“AATTGCC”,等等。当该字符串完成其新行和新标识符时,我如何在序列行的开头添加文本(附加碱基)?只需使用以下GNUsed语法: sed '0~Ns/^/to be pre

此sed comandline脚本在文件中的每一行上预先添加文本:

sed -i 's/^/to be prepended/g' text.txt
我怎样才能使它只在第n行上这样做

我正在处理排序数据,在“norma”多重fasta格式中,首先有一个以>开头的标识符行,然后有额外的文本


下一行以一个随机DNA序列开始,如“AATTGCC”,等等。当该字符串完成其新行和新标识符时,我如何在序列行的开头添加文本(附加碱基)?

只需使用以下GNU
sed
语法:

sed '0~Ns/^/to be prepended/'
#    ^^^
#    set N to the number you want!
例如,将HA前置到4的倍数的行号:

$ seq 10 | sed '0~4s/^/HA/'
1
2
3
HA4
5
6
7
HA8
9
10
或表格
4N+1
上的:

$ seq 10 | sed '1~4s/^/HA/'
HA1
2
3
4
HA5
6
7
8
HA9
10
从:

第一步

这个GNU扩展匹配从第一行开始的每一步行。特别是,当存在非负n时,将选择行,以使当前行号等于first+(n*步)。因此,要选择奇数编号的行,将使用1~2;从第二行开始每隔三行拾取一行,将使用“2~3”;从第十行开始每隔五行选择一行,使用“10~5”;而“50~0”只是一种模糊的说法

顺便说一下,无需使用
/g
进行全局替换,因为
^
每行只需替换一次

$ seq 10 | perl -pe's/^/to be prepended / unless $. % 3'
1
2
to be prepended 3
4
5
to be prepended 6
7
8
to be prepended 9
10
$ seq 10 | perl -pe's/^/to be prepended / unless $. % 3 - 1'
to be prepended 1
2
3
to be prepended 4
5
6
to be prepended 7
8
9
to be prepended 10
$ seq 10 | perl -pe's/^/to be prepended / unless $. % 3 - 2'
1
to be prepended 2
3
4
to be prepended 5
6
7
to be prepended 8
9
10

你有个主意。

Fasta格式并不总是交替的标题行/序列行,你不应该依赖它!只需使用这样一个事实,即只有标题行以“>”开头
seq 15|awk -v line=4  'NR%line==0{$0="Prepend this text : " $0}1'
1
2
3
Prepend this text : 4
5
6
7
Prepend this text : 8
9
10
11
Prepend this text : 12
13
14
15