我在Bash脚本中还很陌生,我有一个要解决的问题。我有一个看起来像这样的文件:
>atac
ATTGGCAATTAAATTCTTTT
>lipa
ATTACCAAGTAAATTCTTTT
.
.
.
其中每个偶数行具有相同的长度,但是可以具有不同的字符,我需要在每个偶数行中删除.txt文件中列出的一系列位置。 .txt文件只有一个数字列表,每行一个,与要删除的位置相对应,如下所示:
3
5
8
10
11
预期输出的每一偶数行必须保持相同的长度,但是在每行中,必须删除.txt文件中列出的位置。有什么建议吗?
如果txt
文件中的“位置”始终表示原始字符串的索引,则该awk-oneliner会为您提供帮助:
awk 'NR==FNR{a[$0];next}FNR%2==0{for(x in a)$x=""}7' your.txt FS="" OFS="" file
>atac
ATGCATAATTCTTTT
>lipa
ATACAGAATTCTTTT
我们标记(作为“ -
”)已删除的字符,以便您可以验证结果是否正确:
awk 'NR==FNR{a[$0];next}FNR%2==0{for(x in a)$x="-"}7' txt FS="" OFS="" file
>atac
AT-G-CA-T--AATTCTTTT
>lipa
AT-A-CA-G--AATTCTTTT