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