터미널 출력에서 ​​필요한 라인 만 어떻게 검색합니까? 번째 df -h출력

세 번째 df -h출력 줄만 말하고 싶습니다 .

어떤 종류의 명령을 사용해야합니까?



답변

내용에 관계없이 세 번째 줄을 출력합니다.

df -h | sed -n 3p


답변

df명령은 실제로 원하는 파일 시스템을 식별하는 인수를 허용합니다. 예를 들어 df /home또는을 사용할 수 있습니다 df /dev/sda3.

스크립트의 출력을 구문 분석하려는 경우 df -P여러 줄로 줄 바꿈되지 않도록하는 것이 좋습니다. 예를 들어, 사용할 수 있습니다 df -Ph /home | tail -n +2(그러나 스크립트의 출력을 구문 분석하는 경우 파일 이름에 공백이있는 가능성을 알고 있어야 함)


답변

head및 의 조합을 사용할 수 있습니다 tail.

df -h | head -3 | tail -1

또는

df -h | tail -n +3 | head -1

그러나 자체 df옵션에서 출력을 필터링 할 수 있으므로 df외부 명령을 사용하기 전에 먼저 출력을 살펴보십시오.

확인하십시오 man df.


답변

Awk는 텍스트 처리 도구이므로이 작업에 적합합니다.

df -h | awk 'NR == 3'


답변

필자는 반드시 세 번째 줄을 찾는 것이 아니라 특정 디스크 (예 🙂 /dev/sda3또는 특정 마운트 지점 (예 :)을 언급하는 줄을 찾는다고 가정합니다 /home.

따라서 출력 순서가 변경되어 다른 결과를 얻을 수 있기 때문에 안전하지 않은 세 번째 행만 표시하는 대신 컨텐츠로 출력을 필터링하고 특정 패턴과 일치하거나 키워드를 포함하는 행만 표시 할 수 있습니다.

이 도구는 grep입니다.

예를 들어 device /dev/sda3에 대한 줄을 원하면 다음 을 입력하십시오.

df -h | grep '/dev/sda3'

홈 디렉토리를 마운트 지점으로 언급하는 행을 원하면 다음을 사용하십시오.

df -h | grep '/home'


답변

당신은 또한 사용할 수 있습니다 perl:

df -h | perl -ne 'print if $.==3'

$.당신이 N 번째 라인을 인쇄 할 수 있도록, 현재의 행 번호입니다 perl -ne 'print if $.==N'.


답변

내 첫 번째 아이디어는 머리 꼬리 구조입니다.

예:

df -h | head -3 | tail -1

head -3세 줄 후에 출력이 중단 tail -1되고 마지막 줄만 출력됩니다.

또는 출력이 어떻게 표시되는지 알고 있다면 grep특정 문자열이 포함 된 행을 찾는 데 사용할 수도 있습니다 .