1

我有一个包含以下信息的文本文件:

Filesystem Use%
/dev/sda1 44%
/dev/sda7 35%
/dev/sda3 2%
/dev/sda2 5%
/dev/sda5 47%
tmpfs 0%

现在,我想制作一个读取该文本文件的批处理文件,将 2,3,4,5 e 6 行的数字存储到一些变量中,然后将这些数字与我设置的特定值进行比较。比较将是这样的:

variable = 44
if variable > 90 

然后它会显示一条控制台消息,其中存储了变量的所有行。

variabletwo =35
if variabletwo > 90 

然后它会显示一条控制台消息,其中存储了变量的所有行。

等等...

有人能帮助我吗?

4

2 回答 2

0

纯 bash 中的常规脚本:

#!/bin/bash

THRESHOLD=20
FILE_TO_TEST="/your/inputfile/here"
{
    read
    while read DISK USED
    do
        [[ ${USED/'%'/} -gt ${THRESHOLD} ]] && echo "$DISK" "$USED"
    done
} < "$FILE_TO_TEST"
于 2013-11-11T22:45:40.333 回答
0

awk将字段转换为标量时将忽略%,因此您可以这样做:

awk 'NR > 1 && NR < 7 && $2 > 90' input-file

打印第二个字段大于 90 的每一行(仅限于第 2 到 6 行)。不过,您可能需要一种更好的方法来限制这些行。可能

awk '$1 ~ /^\/dev/ && $2 > 90' input-file

如果要包含更多文本,请执行以下操作:

awk '$1 ~ /^\/dev/ && $2 > 90 { print "$1 is over the limit: $2" }
于 2013-11-08T13:13:21.323 回答