awk特定列上连续行的总和

awk特定列上连续行的总和,awk,Awk,大多数数据如下:如何忽略此错误 我对awk很陌生,不知道怎么做。 对于数据集T-C.txt: chr1 3000035 + 0 0 CHG CTG chr1 3000037 - 0 0 CHG CAG chr1 3000045 + 0 0 CHG CAG chr1 3000047 - 0 0 CHG CTG chr1 3000048 + 0 0 CHG CTG chr1 3000050 - 0

大多数数据如下:如何忽略此错误

我对
awk
很陌生,不知道怎么做。 对于数据集
T-C.txt

chr1    3000035 +   0   0   CHG CTG
chr1    3000037 -   0   0   CHG CAG
chr1    3000045 +   0   0   CHG CAG
chr1    3000047 -   0   0   CHG CTG
chr1    3000048 +   0   0   CHG CTG
chr1    3000050 -   0   0   CHG CAG
剧本:

chr1    3000035 +   0   0   CHG CTG
chr1    3000037 -   0   1   CHG CAG
chr1    3000045 +   0   0   CHG CAG
chr1    3000047 -   0   0   CHG CTG
chr1    3000048 +   3   0   CHG CTG
chr1    3000050 -   0   0   CHG CAG
chr1    3000109 +   0   0   CHG CAG
chr1    3000111 -   0   0   CHG CTG
生成以下内容的输出:

less T-C.txt | awk '{sum=sum+$4+$5}  {if(sum>0) print;} (NR%2==0) {sum=0;}'
尽管我也希望+链记录是否同时具有0,因为稍后我必须在第2列中仅使用正链的值

例如:

chr1    3000037 -   0   1   CHG CAG
chr1    3000048 +   3   0   CHG CTG
chr1    3000050 -   0   0   CHG CAG
我有一个像上面这样的文件,我正在搜索一些
awk
命令来添加

chr1    3000035 +   2   1   CHG CTG
chr1    3000037 -   0   3   CHG CAG
chr1    3000045 +   0   0   CHG CAG
chr1    3000047 -   0   1   CHG CTG
chr1    3000048 +   0   0   CHG CTG
chr1    3000050 +   0   0   CHG CTG
这意味着每2行,如果它们的总和大于0,则在文本文件上打印,否则不打印。但是,只有3000035和3000037等1个数字的差异的备用
+
-
应予以保留,因为它们被视为只有一条记录。 从上面的示例中,仅打印以下记录,而不是最后两行:

[column4 of '+' strand + column5 of '+' strand + column4 of '-' strand + column5 of '-' strand]
之后,我想将sum打印到+strand值前面的一个新文件中,并计算百分比,如下所示

chr1    3000035 +   2   1   CHG CTG
chr1    3000037 -   0   3   CHG CAG
chr1    3000045 +   0   0   CHG CAG
chr1    3000047 -   0   1   CHG CTG
结果是:

[($4/$4+$5)*100 of '+'strand +($4/$4+$5)*100 of -strand]/2
这应该只打印到文件中。
如果有人知道
awk
命令,请向我解释。

这个脚本应该可以让你朝着目标开始

将以下内容放入一个文件,比如script.awk

chr1    3000035: sum= 6 percentage=['+strand'=66.66+'-strand'=0]/2=33.33%
chr1    3000035 6 33.33

这个脚本应该让你开始朝着你的目标前进

将以下内容放入一个文件,比如script.awk

chr1    3000035: sum= 6 percentage=['+strand'=66.66+'-strand'=0]/2=33.33%
chr1    3000035 6 33.33

非常感谢。但是它给了我$cat script.awk中的第一个错误,这是一个语法错误。所以我从script.awk文件中删除了这一行,然后它给了我致命的错误:尝试零除。如果我有很多记录都有这个零,那么如何忽略这个致命的错误除以零。如果你可以发布一些数据,这会有帮助。第一行是显示脚本的内容,不是脚本的一部分。chr1 3000035+0 0 CHG CTG chr1 3000037-0 CHG CAG chr1 3000045+0 CHG CAG chr1 3000047-0 CHG CTG chr1 3000048+0 0 CHG CTG chr1 3000050-0 CHG CAGi已从原始q中的真实文件输入数据行。另外:文件将在何处或何处形成我需要像awk-f script.awk data.file>output.txt那样写吗?事实上,我对这一点非常陌生,我问这样的问题。我如何在61个不同名称的文件上运行它,但所有文件都在一个文件夹中,我希望输出文件名与输入文件名相同。非常感谢。但它在$cat script.awk中给了我第一个错误,这是一个语法错误。所以我从script.awk文件中删除了这一行,然后它给了我致命的错误:尝试零除。如果我有很多记录都有这个零,那么如何忽略这个致命的错误除以零。如果你可以发布一些数据,这会有帮助。第一行是显示脚本的内容,不是脚本的一部分。chr1 3000035+0 0 CHG CTG chr1 3000037-0 CHG CAG chr1 3000045+0 CHG CAG chr1 3000047-0 CHG CTG chr1 3000048+0 0 CHG CTG chr1 3000050-0 CHG CAGi已从原始q中的真实文件输入数据行。另外:文件将在何处或何处形成我需要像awk-f script.awk data.file>output.txt那样写吗?事实上,我对这一点非常陌生,这是我问的问题。我如何在61个不同名称的文件上运行它,但所有文件都在一个文件夹中,我希望输出文件名与输入文件名相同
$ awk -f script.awk file
chr1 3000035 6 33.3333