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