파일 시스템 이름과 사용법을 얻으려면 "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

관련 정보