仅当第三个字段中的数字大于 X 时才打印行

yae*_*ael 7 linux sed awk perl text-processing

以下lsblk命令以字节为单位打印磁盘使用情况

 lsblk -bio KNAME,TYPE,SIZE,MODEL| grep disk 

 sda   disk  298999349248 AVAGO
 sdb   disk 1998998994944 AVAGO
 sdc   disk 1998998994944 AVAGO
 sdd   disk 1998998994944 AVAGO
 sde   disk   98998994944 AVAGO
Run Code Online (Sandbox Code Playgroud)

当磁盘大于 300000000000 时如何打印磁盘,在管道awkperl单衬后添加或其他

预期输出:

 lsblk -bio KNAME,TYPE,SIZE,MODEL| grep disk | ......
 sdb   disk 1998998994944 AVAGO
 sdc   disk 1998998994944 AVAGO
 sdd   disk 1998998994944 AVAGO
Run Code Online (Sandbox Code Playgroud)

αғs*_*нιη 9

您可以用awk它自己来进行模式匹配,而不是使用grep.

lsblk -bio KNAME,TYPE,SIZE,MODEL| awk '/disk/ && $3> 300000000000 || NR==1'
Run Code Online (Sandbox Code Playgroud)

或使用科学价值3e11


Rom*_*est 6

简短的awk方法:

lsblk -nbio KNAME,TYPE,SIZE,MODEL | awk '$3>3e11'
Run Code Online (Sandbox Code Playgroud)
  • -n( --noheadings) - 不打印标题

  • $3- 第三个字段(SIZE列)

  • 3e11- E -符号。字母E(or e) 通常用于表示“的次方”(可写为"× 10n“),后跟指数的值;换句话说,对于任意两个实数mn,用法的“ mEn”所表示的值m × 10n3e11相当于300000000000


归档时间:

查看次数:

42311 次

最近记录:

7 年,11 月 前