awk - awk 或有条件的不工作
问题描述
输入:一个制表符分隔的输入文件,有 15 列,其中第 15 列是整数。
输出:满足条件的行数。
我的代码:
$ closest-features --closest --no-overlaps --delim '\t' --dist --ec megatrans_enhancers.sorted.bed ../../data/alu_repeats.sorted.bed | awk -v OFS='\t' '{if ($15 <= 1000 || $15 >= -1000) print $0}' | wc -l
1188
|| 在这种情况下,条件无法正常工作(文件中的总行数为 1188,并且我确定至少有些行不满足条件),因为如果我删除 OR 条件,那么它突然就可以工作了:
$ closest-features --closest --no-overlaps --delim '\t' --dist --ec megatrans_enhancers.sorted.bed ../../data/alu_repeats.sorted.bed | awk -v OFS='\t' '{if ($15 <= 1000) print $0}' | wc -l
926
不知道我做错了什么。有什么建议吗?
awk 命令的示例输入:
chr1 378268 378486 chr1-798_Enhancer 17.2 + chr1 375923 376219 AluY|SINE|Alu-HOMER529 0 + E:375923 0.044 -2050
chr1 1079471 1079689 chr1-929_Enhancer 14.6 - chr1 1071271 1071563 AluSx1|SINE|Alu-HOMER1669 0 - E:1071271 0.13 -7909
chr1 1080259 1080477 chr1-830_Enhancer 16.7 - chr1 1071271 1071563 AluSx1|SINE|Alu-HOMER1669 0 - E:1071271 0.13 -8697
chr1 6611744 6611962 chr1-241_Enhancer 46.6 + chr1 6611431 6611723 AluSc|SINE|Alu-HOMER10257 0 + E:6611431 0.089 -22
chr1 6959639 6959857 chr1-58_Enhancer 100.1 - chr1 6966612 6966911 AluSx|SINE|Alu-HOMER11041 0 - E:6966612 0.137 6756
chr1 6960593 6960811 chr1-202_Enhancer 51.6 - chr1 6966612 6966911 AluSx|SINE|Alu-HOMER11041 0 - E:6966612 0.137 5802
chr1 7447888 7448106 chr1-2_Enhancer 181.9 - chr1 7449489 7449799 AluSz|SINE|Alu-HOMER11879 0 + E:7449489 0.119 1384
chr1 10752461 10752679 chr1-131_Enhancer 65.4 - chr1 10752754 10753065 AluSq2|SINE|Alu-HOMER19455 0 + E:10752754 0.106 76
chr1 12485694 12485912 chr1-353_Enhancer 36.7 + chr1 12487328 12487634 AluSx3|SINE|Alu-HOMER23581 0 + E:12487328 0.085 1417
chr1 12486469 12486687 chr1-141_Enhancer 63.6 + chr1 12487328 12487634 AluSx3|SINE|Alu-HOMER23581 0 + E:12487328 0.085 642
解决方案
尝试设置&&
条件,因为数字应该大于-1000
和小于1000
。
Your_command | awk '$15<=1000 && $15>=-1000{count++} END{print count}'
-F"\t"
在上面添加awk
以防您的输入也以制表符分隔。也不需要使用wc -l
after awk
。我已经为此编写了逻辑,因此通过创建一个名为 count 的变量并在 Input_file 的最后打印它来给出满足条件的行数。
同样对于您提供的示例输出3
,我认为这是正确的输出。
推荐阅读
- javascript - 转换嵌套对象数组中的日期字符串(MongoDB)
- ruby-on-rails - 我的 ruby 代码依赖于出现在提示之前的行号。我该如何解决?
- spectrogram - Logmel 频谱图 1 秒音频数据集?
- mysql - 如何将内容文件存储到 Django 中的 ImageField 中
- css - 样式优先级在 SASS 中未按预期工作
- python - Python检查时间(HH:mm:ss)是否存在于两列值中
- python - 为什么运行第二个异步测试会返回一个 got Future
连接到不同的循环 - c# - AspNet Core Serilog SQL 自定义列不起作用
- docker - 为 docker 容器创建一个空目录
- sas - 百分位如果和