이 명령은 출력을 개행 문자에 따라 표시하는 대신 공백에 따라 표시한다는 점을 제외하면 head와 유사합니다.

이 명령은 출력을 개행 문자에 따라 표시하는 대신 공백에 따라 표시한다는 점을 제외하면 head와 유사합니다.

head예:

Desktop:  
 λ df -h
Filesystem       Size   Used  Avail Capacity iused    ifree %iused  Mounted on
/dev/disk1s7s1  113Gi  8.9Gi  8.6Gi    51%  355384 90345720    0%   /
/dev/disk1s2    113Gi  3.3Gi  8.6Gi    28%    1743 90345720    0%   /System/Volumes/Preboot
/dev/disk1s4    113Gi   24Ki  8.6Gi     1%       5 90345720    0%   /System/Volumes/VM
/dev/disk1s6    113Gi   63Mi  8.6Gi     1%     660 90345720    0%   /System/Volumes/Update
/dev/disk1s5    113Gi   91Gi  8.6Gi    92%  655534 90345720    1%   /System/Volumes/Data
/dev/disk1s1    113Gi   64Ki  8.6Gi     1%      15 90345720    0%   /Volumes/mnbvcxz    - Data
/dev/disk3s1     58Gi   57Gi  843Mi    99%     209  8636800    0%   /Volumes/Untitled

Desktop:  
 λ df -h | head -n1
Filesystem       Size   Used  Avail Capacity iused    ifree %iused  Mounted on

줄 바꿈 대신 공백으로 필드의 출력을 표시하는 특별한 명령이 있습니까?

cmd는 awkcmd의 작업을 수행합니다.

Filesystem       Size   Used  Avail Capacity iused    ifree %iused  Mounted on \ 
| awk -F ' ' '{print$1}'
Filesystem

답변1

짜증나게도 간격을 깨지 않고 가변 개수의 공백으로 구분된 열 범위를 추출하는 표준 명령은 없습니다.

  • 의 경우 cut -d ' ' -f 1-2단일 공백이 구분 기호이므로 예를 들어 , , , 4 " a b"개의 필드가 있습니다 .""a""b
  • cut -c 1-4필드가 아닌 문자만 잘라냅니다.
  • awk '{print $1, $2}'기본적으로 특수한 동작이므로 선행 및 후행 필드를 무시하고 여러 공백으로 구분된 필드를 추출합니다. 그러나 이러한 필드는 출력에서 FS=" "​​단일 공백 ​​문자(기본값)로 구분됩니다 .OFS

GNU 또는 호환 방법을 사용하여 필드 사이의 공백을 유지하면서 첫 번째 $n(또는 대부분의 ) 필드를 추출하려면 다음을 사용하는 방법이 있습니다.$ngrep

n=3
grep -Eo "^(\s*\S+){0,$n}"

(빈 줄을 버립니다)

이제 이 명령의 출력은 df필드 값 자체에 공백이 포함될 수 있으므로 이러한 방식으로 데이터를 안정적으로 추출할 수 있는 패턴을 따르지 않습니다. Mounted on헤더나 일부 마운트 지점 의 예를 참조하세요 . 일부 필드는 왼쪽 정렬되고 일부 필드는 오른쪽 정렬되는 방식도 확인하세요. 이 경우 필드 너비를 하드코딩하지 않고 필드를 추출하기가 어렵습니다( cut -c예: 다음을 사용). 그렇기 때문에 mlr --pprint cut여기서는 사용할 수 없습니다.

가능하다면 출력을 생성하는 도구에 원하는 열만 인쇄하도록 지시하는 것이 가장 좋습니다. 예를 들어, GNU 구현에서는 다음을 df사용할 수 있습니다.

df -h --output=source,size,used

출력을 사후 처리해야 하는 경우 구문 분석 가능한 형식으로 출력하는 옵션을 찾으세요. 별로 도움이 되지 않지만 출력 df을 안정적으로 후처리할 수 없습니다.-Pdf

Linux에서는 GNU가 동일한 정보를 사후 처리 가능하게 출력할 수 있는 경우 findmnt( lsblkstat -f: df옵션 참조 -J)잘못된 UTF-8 문자열이 포함된 JSON을 처리하는 방법그리고 )-cstat

답변2

을(를) 찾고 있는 것 같습니다 cut.

귀하의 예에서는 cut -d' ' -f1.

관련 정보