bash-在文件中搜索字符串并返回所有匹配的位置

ahb65

我有一个fasta file_imagine作为txt文件,其中偶数行是字符序列,奇数行是序列id's_。我想在序列中搜索字符串,并获取匹配子字符串及其ID的位置。示例:输入:

>111
AACCTTGG
>222
CTTCCAACC
>333
AATCG

搜索“ CC”。输出:

3 111
4 8 222
约翰1024
$ awk -F'CC' 'NR%2==1{id=substr($0,2);next} NF>1{x=1+length($1); b=x; for (i=2;i<NF;i++){x+=length(FS $i); b=b " " x}; print b,id}' file
3 111
4 8 222

解释:

  • -F'CC'

    awk将输入行分成多个字段。CC在此示例中,我们指示它使用感兴趣的序列作为字段分隔符。

  • NR%2==1{id=substr($0,2);next}

    在奇数行上,我们将id保存到variable id假设第一个字符为>,而id为后跟。捕获了ID之后,我们指示awk跳过其余命令,并从该next重新开始

  • NF>1{x=1+length($1); b=x; for (i=2;i<NF;i++){x+=length(FS $i); b=b " " x}; print b,id}

    如果awk在输入行上仅找到一个字段NF==1,则表示没有找到字段分隔符,我们将忽略这些行。

    对于其余的行,我们计算每个匹配项的位置,x然后将find的每个值保存x在string中b

    最后,我们打印匹配位置bid

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过bash在文件中搜索字符串,但只能匹配

如何使用Bash搜索路径中包含给定子字符串的所有文件/文件夹?

如何编写bash脚本以在当前目录中的所有文件中搜索多个字符串?

在 target-directory(ies)/ 中的所有文件上搜索 input.file 中的所有字符串并打印(Bash)

使用 bash 為文件夾中的所有文件切換文件名中 2 個字符串的位置

替换与Bash中的字符串匹配的文件的部分行

bash cat所有文件名中包含特定字符串的文件

Bash:在字符串中使用 grep 获取所有字符串匹配的最佳方法

在文件中查找字符串并在bash中删除其旁边的所有文本

使用bash脚本在txt文件中打印所有“特定”字符串

Bash或Python:在所有.tex文件中递归追加和添加字符串

对所有子目录中的文件子集中的字符串进行bash递归操作

bash,找到var中的所有字符串

在bash中检测文件中的现有字符串

如何将字符串附加到Bash目录中所有文件的所有行中?

用bash中的环境变量替换所有字符串正则表达式匹配项

Bash:将文件中的所有行与一个字符串或另一个字符串匹配(并保持顺序)

如何替换bash中所有字符串中的特定子字符串?

如何在二进制文件中搜索字符串并输出bash中字符串之前有多少字节

在文件夹bash中以字符串开头的所有文件名上调用脚本

Bash脚本,找到当前文件夹中包含特定字符串的所有文件

如何在 BASH 脚本中读取 .ini 文件以搜索文件中的字符串?

Bash:从bash函数返回字符串

用于在 XML 文件中搜索字符串并使用该字符串重命名文件的 Bash 脚本

计算bash文件中带有可变子字符串的字符串出现的次数

搜索字符串中char的所有位置,并以逗号分隔的字符串返回

用搜索字符串中的/替换bash文件中的文本

Bash脚本替换文件中所有出现的字符串,包括文件名

Bash文件夹中所有文件名中都出现字符串