Perl 提取值大于50的行
如何从包含21列和150行的大型矩阵中选择值小于10的行。例如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
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。。