잘라내기/grep df -h [반복]

잘라내기/grep df -h [반복]

"Avail" 열 아래에서 마운트 지점 "3.1T"를 얻는 방법(grep 또는 cut 사용)?

Filesystem                            Size  Used Avail Use% Mounted on

vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07

답변1

df무엇을 출력할지 알려주세요 :

df -h --output=avail | tail -n1

참고: 이는 모든 *nix에 이식 가능하지 않을 수 있습니다.

답변2

사용awk

awk '{print $4}'
3.1T  

 echo vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07 | awk '{print $4}'

또는grep

 grep -o '\b3.1T\b'
 3.1T  

 echo vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07 | grep -o '\b3.1T\b'


\b in a regular expression means "word boundary".
-o, --only-matching

또는 cut:

cut -d" " -f4
 3.1T  

 echo vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07 | cut -d" " -f4

실제로는 테이블을 고정 너비 테이블로 변환한 후 cut다음과 같이 사용해야 합니다.

echo "vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07" | awk '{for(i=1;i<=NF;i++) { printf "%-5s",$i } ; printf("\n"); }' | cut -d" " -f3
3.1T

답변3

다음 명령을 시도해 보세요.

df -h | awk '/\/vstorage\/cluster07/ {print $4}'

답변4

그리고 sed:

df -h | sed -rn 's|[^ ]+ +([^ ]+) .*|\1|p'

또는 다음을 사용하여 grep:

df -h | grep -Eo '[0-9]+%'

%마지막 것은 출력에서 ​​하나의 문자 에만 의존하기 때문에 약간 조잡할 수 있습니다 df -h. 그러나 그것은 매우 간단하고 효과적입니다.

관련 정보