以下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 时,如何通过在管道awk
或perl
单行符后添加或其他方式打印磁盘
预期输出:
lsblk -bio KNAME,TYPE,SIZE,MODEL| grep disk | ......
sdb disk 1998998994944 AVAGO
sdc disk 1998998994944 AVAGO
sdd disk 1998998994944 AVAGO
答案1
您可以使用它awk
本身来进行模式匹配,而不是使用grep
.
lsblk -bio KNAME,TYPE,SIZE,MODEL| awk '/disk/ && $3> 300000000000 || NR==1'
或者说有科学价值3e11
。
答案2
短的awk方法:
lsblk -nbio KNAME,TYPE,SIZE,MODEL | awk '$3>3e11'
-n
(--noheadings
) - 不打印标题$3
- 第三个字段(SIZE
列)3e11
-乙-符号。字母E
(或e
)通常用来表示“次十计算为“”的幂(可写为"× 10n
“),后跟指数值;换句话说,对于任意两个实数m
和n
,使用“mEn
”将表示 的值m × 10n
。3e11
相当于300000000000
.
答案3
Perl解决方案:
lsblk -bio KNAME,TYPE,SIZE,MODEL | perl -ane 'print if $F[2] > 3e11'
您也可以使用 300_000_000_000 作为值。
-n
逐行读取输入而不打印-a
将空格上的输入拆分到 @F 数组中