计算比赛前后的字符串长度,以bash或sed逐行

LP_640

我有一个DNA序列文件“测试”,每个序列都带有标头或ID,如下所示:

>new
ATCGGC
>two
ACGGCTGGG
>tre
ACAACGGTAGCTACTATACGGTCGTATTTTTT

我想在匹配给定字符串之前和之后打印每个连续字符串的长度,例如 CGG

输出将如下所示:

>new
2 1
>two
1 5
>tre 
4 11 11 

或者可能只是每行匹配之前和之后的字符长度。

2 1
1 5 
4 11 11 

我的第一次尝试是使用sed在找到'>'之后打印下一行,然后找到了每个grep匹配“ CGG”的字节偏移量,我打算将其用于转换为长度,但这产生了以下内容:

sed -n '/>/ {n;p}' test | grep -aob "CGG" 

2:CGG
8:CGG
21:CGG
35:CGG

本质上,grep会为每个匹配打印字节偏移量,然后递增计数,而我希望独立为每一行添加字节偏移量(即在每行之后重置)。

我想我也需要使用sed进行搜索,因为它逐行运行,但是我不确定如何计算给定字符串中的字节偏移量或字符。

任何帮助将非常感激。

贾斯

通过使用给定的字符串作为awk中的字段分隔符,就像遍历每行中的字段并打印其长度一样简单。(以>我们开头的行照原样打印。)

尽管您可能需要检查一些边缘情况,例如以CGG,以,以CGG,仅包含CGG,等这将为您的示例数据提供所需的输出

$ awk -F CGG '/^>/ {print; next} {for (i=1; i<=NF; ++i) {printf "%s%s", length($i), (i==NF)?"\n":" "}}' file.txt
>new
2 1
>two
1 5
>tre
4 11 11

awk -F CGG

使用“ CGG”作为字段分隔符调用awk。这会将每一行解析为一组字段,这些字段由字符串“ CGG”的每次(如果有)出现分隔。“ CGG”字符串本身既不包含在任何字段中,也不包含在任何字段中。

因此,该线ACAACGGTAGCTACTATACGGTCGTATTTTTT被解析成三个字段:ACAATAGCTACTATA,和TCGTATTTTTT,通过在AWK程序表示$1$2$3分别。

'/ ^> / {print; 下一个}

此模式/操作告诉awk,如果该行>以打印该行开始并立即转到输入的下一行,则无需考虑awk程序中的任何其他模式或操作。

{for(i = 1; i <= NF; ++ i){printf“%s%s”,length($ i),(i == NF)?“ \ n”:“”}}

如果我们执行此操作,我们知道该行不是从开头开始的>(请参见上文)。由于只有一个动作而没有任何模式,因此将为到达此处的每一行输入执行该动作。

for循环遍历所有字段(这NF是一个特殊的awk变量,其中包含当前行中的字段数)并显示它们的长度。通过检查是否到达最后一个字段,我们知道是打印换行符还是仅打印空格。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在比赛前后替换字符

来自分类Dev

如何在每次比赛前添加字符串?

来自分类Dev

计算sed中的字符串长度

来自分类Dev

计算bash中字符串的长度

来自分类Dev

regex:比赛前后的环顾

来自分类Dev

删除比赛前后的所有内容

来自分类Dev

计算字符串中图像的长度

来自分类Dev

在imacros中计算字符串长度

来自分类Dev

SED:在比赛前寻址两行

来自分类Dev

SED:在比赛前寻址两行

来自分类Dev

如何在比赛前后匹配和创建字典

来自分类Dev

bash循环中的字符串长度

来自分类Dev

bash文件与选定字符串的逐行比较

来自分类Dev

bash文件与选定字符串的逐行比较

来自分类Dev

计算包含Unicode字符的字符串的长度

来自分类Dev

DB2-计算字符串字符,而不是长度

来自分类Dev

Bash sed字符串替换错误

来自分类Dev

修剪字符前后的字符串

来自分类Dev

某些字符前后的 SQL 字符串

来自分类Dev

Bash,逐行读取,逐行拆分字符串除以“,”,存储到数组

来自分类Dev

字符串的长度

来自分类Dev

使用perl计算特定文件格式的字符串的长度

来自分类Dev

计算Spark SQL DSL中的字符串长度

来自分类Dev

用cobol计算变量的长度字符串

来自分类Dev

熊猫:计算字符串中的点数-与长度相同吗?

来自分类Dev

使用外部表计算字符串长度

来自分类Dev

用cobol计算变量的长度字符串

来自分类Dev

计算VIM中突出显示的字符串长度

来自分类Dev

计算变量 SAS 中字符串的长度