将另一行的前缀添加到每个字符串

Pol*_*ova -1 bash awk sed

我有一个文件:

# Sequence Data: seqnum=1;seqlen=3142;seqhdr="GUT_GENOME148255_1"
>1_59_1276_-
>2_1339_1842_-
>3_1873_2436_-
>4_2470_2928_-
# Sequence Data: seqnum=2;seqlen=3085;seqhdr="GUT_GENOME148255_2"
>1_3_266_-
>2_256_1038_-
# Sequence Data: seqnum=3;seqlen=3050;seqhdr="GUT_GENOME148255_3"
>1_22_1062_-
>2_1072_1746_-
>3_1767_3017_-
# Sequence Data: seqnum=4;seqlen=2934;seqhdr="GUT_GENOME148255_4"
>1_83_436_-
>2_438_1430_-
>3_1432_1872_-
>4_1986_2933_+
Run Code Online (Sandbox Code Playgroud)

我想添加与seqnum以 开头的每一行对应的数字>,这样它看起来像这样:

# Sequence Data: seqnum=1;seqlen=3142;seqhdr="GUT_GENOME148255_1"
>1-1_59_1276_-
>1-2_1339_1842_-
>1-3_1873_2436_-
>1-4_2470_2928_-
# Sequence Data: seqnum=2;seqlen=3085;seqhdr="GUT_GENOME148255_2"
>2-1_3_266_-
>2-2_256_1038_-
# Sequence Data: seqnum=3;seqlen=3050;seqhdr="GUT_GENOME148255_3"
>3-1_22_1062_-
>3-2_1072_1746_-
>3-3_1767_3017_-
# Sequence Data: seqnum=4;seqlen=2934;seqhdr="GUT_GENOME148255_4"
>4-1_83_436_-
>4-2_438_1430_-
>4-3_1432_1872_-
>4-4_1986_2933_+
Run Code Online (Sandbox Code Playgroud)

该过程应该遍历整个文件。我怀疑这是可以做到的,awk但我的努力是没有用的。

pot*_*ong 5

这可能对你有用(GNU sed):

sed -E '/seqnum=/h;/^>/G;s/^>(.*)\n[^0-9]+([0-9]+).*/>\2-\1/' file
Run Code Online (Sandbox Code Playgroud)

复制包含 的行seqnum

对于以 开头的每一行>,附加副本并使用模式匹配和反向引用,根据需要设置格式。