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