Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 打印包含给定数字并后跟制表符的行至少n次_Bash_Shell_Grep - Fatal编程技术网

Bash 打印包含给定数字并后跟制表符的行至少n次

Bash 打印包含给定数字并后跟制表符的行至少n次,bash,shell,grep,Bash,Shell,Grep,我有一个以制表符分隔的文件: scaffold_0 102 1 4 0 1 1 1 2 1 2 1 3 scaffold_0 103 1 4 0 2 1 1 2 1 2 1 3 scaffold_0 104

我有一个以制表符分隔的文件:

scaffold_0      102     1       4       0       1       1       1       2       1       2       1       3
scaffold_0      103     1       4       0       2       1       1       2       1       2       1       3
scaffold_0      104     2       4       0       2       3       5       2       1       2       7       3
scaffold_0      105     1       4       0       2       1       1       2       1       2       1       3
scaffold_0      106     1       4       0       2       1       1       2       1       2       1       3
scaffold_0      107     2       3       3       2       5       1       2       1       2       2       4
scaffold_0      108     1       4       0       2       1       1       2       1       2       2       5
scaffold_0      109     1       4       0       2       1       1       2       1       2       2       5
scaffold_0      110     1       3       0       2       1       1       2       1       2       2       5
scaffold_0      111     1       3       0       2       1       1       1       1       2       2       5
并且需要抓取数字等于或大于2的行显示在9列或更多列中。 因此,我:

scaffold_0      104     2       4       0       2       3       5       2       1       2       7       3
scaffold_0      107     2       3       3       2       5       1       2       1       2       2       4
另一种放置方式是,我必须删除每行0和1的计数大于2的行

我试过:

grep '[2-9]\t{9,}'
它不起作用,即使它起作用了,也抓不到10、11、101等等

(抓取2、12、22等不应该是问题)

而IFS=read-r行;做
计数=$(
当IFS=read-r行时;执行
计数=$(
使用:


注意:
numgrep
,以及此代码将正确使用负数和小数。

使用:

$ awk '{c=0; for (i=2;i<=NF;i++) c+=($i>=2)} c>8' file
scaffold_0      104     2       4       0       2       3       5       2       1       2       7       3
scaffold_0      107     2       3       3       2       5       1       2       1       2       2       4

注意:
numgrep
和此代码将正确使用负数和小数。

$awk'{c=0;对于(i=2;i=2)}c>8'文件
$ awk '{c=0; for (i=2;i<=NF;i++) c+=($i>=2)} c>8' file
scaffold_0      104     2       4       0       2       3       5       2       1       2       7       3
scaffold_0      107     2       3       3       2       5       1       2       1       2       2       4
脚手架0 104 2 4 0 2 3 5 2 1 2 7 3 脚手架0 107 2 3 2 5 1 2 2 4
这将在任何UNIX设备上的任何shell中工作,并且运行速度将比当前接受的答案快几个数量级。

$awk'{c=0;for(i=2;i=2)}c>8'文件 脚手架0 104 2 4 0 2 3 5 2 1 2 7 3 脚手架0 107 2 3 2 5 1 2 2 4

这将在任何UNIX设备上的任何shell中工作,并且运行速度将比当前接受的答案快几个数量级。

所有数字都小于10?第一个数字
104
count吗?数字可以是负数吗?数字可以大于104,并且没有负数。所有数字都小于10?第一个数字
104
count?数字可以是负数吗?数字可以大于104并且没有负数。请看,这确实是最快的方法。谢谢!最快、最简洁、最方便的方法-即,正确的方法!这确实是最快的方法。谢谢!最快、最简洁、最方便的方法-即,正确的方法!
scaffold_0      104     2       4       0       2       3       5       2       1       2       7       3
scaffold_0      107     2       3       3       2       5       1       2       1       2       2       4
$ awk '{c=0; for (i=2;i<=NF;i++) c+=($i>=2)} c>8' file
scaffold_0      104     2       4       0       2       3       5       2       1       2       7       3
scaffold_0      107     2       3       3       2       5       1       2       1       2       2       4