Linux

僅當第三個欄位中的數字大於 X 時才列印行

  • October 2, 2017

以下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

如何在磁碟大於 300000000000 時列印磁碟,方法是在管道awkperl單襯之後添加,否則

預期輸出:

lsblk -bio KNAME,TYPE,SIZE,MODEL| grep disk | ......
sdb   disk 1998998994944 AVAGO
sdc   disk 1998998994944 AVAGO
sdd   disk 1998998994944 AVAGO

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

lsblk -bio KNAME,TYPE,SIZE,MODEL| awk '/disk/ && $3> 300000000000 || NR==1'

或者使用科學價值3e11

awk方法:

lsblk -nbio KNAME,TYPE,SIZE,MODEL | awk '$3>3e11'

  • -n( --noheadings) - 不列印標題
  • $3- 第三個欄位(SIZE列)
  • 3e11- E -符號。字母E(或e)通常用於表示“次方的乘以”(可以寫成"× 10n“),後面是指數的值;換句話說,對於任何兩個實數mn,用法of " mEn" 表示m × 10n.的值3e11等同於300000000000.

引用自:https://unix.stackexchange.com/questions/395588