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