Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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
Perl 提取值大于50的行_Perl_Shell - Fatal编程技术网

Perl 提取值大于50的行

Perl 提取值大于50的行,perl,shell,Perl,Shell,如何从包含21列和150行的大型矩阵中选择值小于10的行。例如 miRNameIDs degradome AGO LKM......till 21 osa-miR159a 0 42 42 osa-miR396e 0 7 9 vun-miR156a 121 77 4 ppt-miR156a 12 7 4 gma-miR6300 118

如何从包含21列和150行的大型矩阵中选择值小于10的行。例如

miRNameIDs  degradome   AGO     LKM......till 21
osa-miR159a      0       42      42
osa-miR396e      0        7       9
vun-miR156a     121      77       4
ppt-miR156a     12        7       4
gma-miR6300     118       2       0
bna-miR156a      0        114     48
gma-miR156k      0        46       1
osa-miR1882e     0        7        0
.
.
.
期望输出为:-

miRNameIDs  degradome   AGO    LKM......till 21
vun-miR156a      121    77      4
gma-miR6300      118    2       0
bna-miR156a       0    114      48
.
.
.
till 150 rows
使用perl单行程序

perl -ane 'print if $. == 1 || grep {$_ > 50} @F[1..$#F]' file.txt
说明: 开关:

-a:在空间上拆分线并将其加载到数组@F中 -n:为输入文件中的每一行创建一个while{…}循环。 -e:告诉perl在命令行上执行代码。 代码:

$.==1:检查当前行是否为行号1。 grep{$\u>50}@F[1..$F]:查看数组中的每个条目是否大于50。 ||:逻辑或运算符。如果上述任何条件为真,它将打印该行。 使用perl单行程序

perl -ane 'print if $. == 1 || grep {$_ > 50} @F[1..$#F]' file.txt
说明: 开关:

-a:在空间上拆分线并将其加载到数组@F中 -n:为输入文件中的每一行创建一个while{…}循环。 -e:告诉perl在命令行上执行代码。 代码:

$.==1:检查当前行是否为行号1。 grep{$\u>50}@F[1..$F]:查看数组中的每个条目是否大于50。 ||:逻辑或运算符。如果上述任何条件为真,它将打印该行。
如果你能解释魔法,我会给你+1。是的,-lane和@F可以用谷歌搜索。。但如果答案已经知道,那么原来的问题也可以…@雷克萨斯为你和其他寻求参考的人添加了一个解释。如果你能解释这个魔法,我会给你+1。是的,-lane和@F可以用谷歌搜索。。但是,如果答案已经知道,那么原始问题也可以…@lexu为您和其他寻求参考的人添加了一个解释。为什么osa-miR159a 0 42行没有包含在期望的输出中?第2列中的值为0,小于10。为什么预期输出中不包括osa-miR159a 0 42行?第2列中的值为0,小于10。。