这sed的comandline脚本预先考虑在一个文件中的每一行文字:添加文字到每个n阶行的文本文件
sed -i 's/^/to be prepended/g' text.txt
我怎样才能使它所以只做到这一点对每n 个线?
我正在使用测序数据,并且在“norma”多个fasta格式中,首先有一个标识符行用>来盯着,然后有额外的文本。
下一行以像“AATTGCC”等随机DNA序列开始,当该字符串完成其新行和新标识符时,我如何在序列行的开头添加文本(其他基)?
这sed的comandline脚本预先考虑在一个文件中的每一行文字:添加文字到每个n阶行的文本文件
sed -i 's/^/to be prepended/g' text.txt
我怎样才能使它所以只做到这一点对每n 个线?
我正在使用测序数据,并且在“norma”多个fasta格式中,首先有一个标识符行用>来盯着,然后有额外的文本。
下一行以像“AATTGCC”等随机DNA序列开始,当该字符串完成其新行和新标识符时,我如何在序列行的开头添加文本(其他基)?
$ 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
你有个想法。
只需使用以下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
来自sed
manual → 3.2. Selecting lines with sed
:
第一〜步骤
这GNU扩展第一起始线上的每个第STEP线相匹配。特别是,当存在一个非负的n时,会选择行,这样当前的行号等于first +(n * step)。因此,要选择奇数行,可以使用1〜2;从第二个开始选择每第三行,将使用'2〜3';从第十行开始选择第五行,使用'10〜5';和'50〜0’ 是说50
顺便说的只是一个模糊的方式,就没有必要使用/g
全球更换,因为^
只需一次在每一行更换。
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
Fasta格式并不总是交替的标题/序列行,你不应该依赖它!只需使用只有标题行以'>'开头的事实 –