`df -h`를 사용하여 파일 시스템 이름 및 사용법을 가져옵니다.

`df -h`를 사용하여 파일 시스템 이름 및 사용법을 가져옵니다.
 df -h | grep test | sed -e 's/*%.^ //g;s/.*[ ^I]//'

산출:

/시험
/테스트/drv0
/테스트/drv1
 df -h  | grep test  | cut -d '%' -f1 | sed -e 's/*%.^ //g;s/.*[ ^I]//'

산출:

10
20
15

다음과 같이 출력에 어떻게 참여할 수 있는지 알고 싶습니다.

/테스트 10
/테스트/drv0 20
/테스트/drv1 15

누군가 나를 도와줄 수 있나요?

답변1

df -P | sed -n '/test/s/.*[[:blank:]]\(.*\)%[[:blank:]]*\(.*\)/\2 \1/p'

(마운트 지점 경로에 % 또는 개행 문자가 포함되어 있지 않다고 가정)

답변2

나는 다음과 같이 생각합니다. 질문의 내용을 전부 이해하지는 못하지만

df -h | awk '/test/{print $1" "$5}' | sed -e ':a;N;$!ba;s/\n/ /g' -e 's/%//g'

질문이 변경되었으므로 업데이트된 답변은 다음과 같습니다.

df -h | awk '/test/{print $1, +$5}'

답변3

df | awk '/test/ {print $1 " " $5}'

인쇄할 것이다

/test 10%
/test/drv0 20%
/test/drv1 15%

답변4

이것은 특정 상황에 대한 좋은 해결책이 아닙니다(작동하지만 불필요하게 복잡함). 이미 제공된 답변을 사용해야 합니다. 여러 프로그램의 출력을 결합할 때 매우 유용한 또 다른 도구를 언급하고 싶었습니다 paste.

DESCRIPTION
   Write  lines  consisting  of  the sequentially corresponding lines from
   each FILE, separated by TABs, to standard output.   With  no  FILE,  or
   when FILE is -, read standard input.

배쉬와 결합프로세스 대체, 다음과 같이 두 명령의 출력을 결합할 수 있습니다.

$ paste  <(df -h | grep test | sed -e 's/*%.^ //g;s/.*[ ^I]//') \
       <(df -h  | grep test  | cut -d '%' -f1 | sed -e 's/*%.^ //g;s/.*[ ^I]//')
 /test 10
 /test/drv0 20
 /test/drv1 15

또는 더 간단한 예를 사용하려면 다음과 같이 하세요.

$ paste <(echo -e "a\nb\nc") <(echo -e "1\n2\n3")
a   1
b   2
c   3

관련 정보