내 bash 스크립트에서 df -k 명령을 통해 /var 파티션의 사용 용량을 인쇄하고 싶습니다.
나는 다음을 수행합니다
df -k | grep var | awk '{print $5}'
문제는 "use%" 숫자가 네 번째 필드에 존재할 때도 있고, 다섯 번째 필드에 존재할 때도 있고, 다른 필드에 6개 이상이 존재할 때도 있다는 점입니다.
그래서 맞춰보고 싶다숫자%var로 분할됨
var 파티션의 사용 % 수를 일치시키는 방법을 제안하십시오 (우아한 방법)
감사해요
실시예 1
df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 13204256 4247972 8274728 34% /
/dev/sda5 5080796 141540 4677000 3% /tmp
/dev/sda2 14013128 7578564 5711240 58% /var
/dev/sda1 194442 40649 143754 23% /boot
tmpfs 1037756 0 1037756 0% /dev/shm
실시예 2
df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/SysGroup-lv_root
18578172 2680752 14953704 16% /
tmpfs 510240 0 510240 0% /dev/shm
/dev/sda1 198337 50064 138033 27% /boot
/dev/mapper/SysGroup-lv_tmp
5160576 141464 4756968 3% /tmp
/dev/mapper/SysGroup-lv_var
28899452 3481568 23949880 13% /var
답변1
순수한 grep 솔루션은 어떻습니까?
df -k | grep var | grep -o '[0-9]*%'
그런 다음 Perl 정규 표현식을 사용하여 이 두 grep을 연결할 수 있습니다.
df -k | grep -Po 'var.* \K[0-9]*%'
답변2
정규식을 사용하여 % 숫자를 일치시킬 수 있습니다.
df -k | grep -E ' /run$' | grep -Eo '[0-9]+%'
몇 가지 설명.
df -k
설명이 필요함: 디스크 사용 가능 테이블을 표시합니다.
grep -E '/var$'
확장 정규식 엔진을 사용하여 mountponit
grep
일치/var
정규식은
/var$
패턴을 줄 끝에 고정하므로 어떤 것과도 일치하지 않습니다/var/run
./var/tmp
이는 간단한grep var
경우입니다. 또한 슬래시 앞의 공백에 유의하십시오.grep -Eo '[0-9]+%'
-E
Grep에서 PCRE 정규 표현식이 활성화됩니다.-o
일치하는 문자열만 인쇄합니다.
정규식은 매우 간단합니다.
[0-9]
임의의 숫자와 일치+
적어도 하나의 숫자와 일치한다는 의미입니다.%
%
문자 와 일치합니다
예제 출력:
$ df -k | grep -E ' /var$' | grep -Eo '[0-9]+%'
1%
좋은 점은 Use%가 어디에 있는지는 중요하지 않다는 것입니다.
grep이 PCRE 정규식을 지원하는 경우(예: Mac OSX는 지원하지 않음) 단일 정규식을 사용할 수 있습니다.
df -h | grep -Po '[0-9]+%(?= /var$)'
이는 Perl 정규식을 사용하고 "look-behind"를 사용하여 패턴을 고정 /var$
하고 정규식과 일치시킵니다. 궁금하다면 이 기능에 대해 읽어보세요.이 튜토리얼.
답변3
다음은 귀하에게 필요한 우아한 솔루션입니다.
/var만 원한다면
df --output=pcent /var
grep을 사용하고 싶다면
df --output=source,pcent | grep var
또는 다섯 번째 필드가 항상 Use%인 posix 형식을 사용할 수 있습니다.
df -k --portability | grep var | awk '{print $5}'
답변4
당신은 그것을 사용할 수 있습니다 :
.... | awk '{print $(NF-1)}'
출력 헤더에 패턴이 포함되어 있으면 df
인쇄가 발생할 수 있습니다 grep
. 이를 방지하려면 다음을 수행하세요.
.... | awk '$(NF-1) ~ /%/'
보다 일반적인 접근 방식인 POSIXly는 -P
다음 옵션을 사용합니다.df:
df -P | .... | awk '{print $5}'