필터링을 위해 awk 명령을 사용하여 bash에 인수 전달

필터링을 위해 awk 명령을 사용하여 bash에 인수 전달

아래 기본 스크립트를 어떻게 개선할 수 있는지 도움을 요청하고 싶습니다.

그래서 bash에 인수를 전달할 수 있었지만 awk 명령을 사용하여 더 유연하게 만들 수 있습니까?

1개의 파일 시스템에 대해 2줄을 표시하는 명령 에서 오류가 발생했습니다 df -h(한 줄만 있어야 함).

$6그런 다음 인수 번호( 및 $5)가 변경되었으므로 스크립트에 올바른 매개변수가 표시되지 않습니다 .

견본:

df -h

Filesystem                   Size            Used  Avail  Use% Mounted on
/dev/test/test2/test3        1.1G            100M  1G     1%   /test
/dev/test/test2/test3/test4
                          1.1G            100M  1G     1%   /tst2


$ cat myscript.sh
#!bin/bash

df -h "$@" | awk '{print $6,"=",$5}' | sed -n '1!p'

$ ./myscript.sh /test /tst2

내 출력은

/test=1%

=/tst2

하지만 그래야 한다

/test=1%

/tst2=1%

답변1

대신 이것을 사용하면 출력 후처리에 대해 걱정할 필요가 없습니다 df.

df -P

이렇게 하면 하나의 파일 시스템에 대한 출력이 여러 줄에 걸쳐 있지 않게 됩니다.

따라서 최종 스크립트는 다음과 같습니다.

df -h -P "$@" | awk '{ print $6,"=",$5}' | sed -n '1!p'

관련 정보