提取具有值> 1的行。 50

时间:2014-05-28 05:01:26

标签: perl shell

如何选择那些值为< 10个来自21列和150行的大矩阵的值。

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

1 个答案:

答案 0 :(得分:5)

使用perl one-liner

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

说明:

切换

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

<强>代码

  • $. == 1:检查当前行是否为第1行。
  • grep {$_ > 50} @F[1..$#F]:查看数组中的每个条目,看它是否大于50.
  • ||:逻辑OR运算符。如果我们上述条件中的任何一个为真,则打印该行。