![이 명령은 출력을 개행 문자에 따라 표시하는 대신 공백에 따라 표시한다는 점을 제외하면 head와 유사합니다.](https://linux55.com/image/226296/%EC%9D%B4%20%EB%AA%85%EB%A0%B9%EC%9D%80%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EA%B0%9C%ED%96%89%20%EB%AC%B8%EC%9E%90%EC%97%90%20%EB%94%B0%EB%9D%BC%20%ED%91%9C%EC%8B%9C%ED%95%98%EB%8A%94%20%EB%8C%80%EC%8B%A0%20%EA%B3%B5%EB%B0%B1%EC%97%90%20%EB%94%B0%EB%9D%BC%20%ED%91%9C%EC%8B%9C%ED%95%9C%EB%8B%A4%EB%8A%94%20%EC%A0%90%EC%9D%84%20%EC%A0%9C%EC%99%B8%ED%95%98%EB%A9%B4%20head%EC%99%80%20%EC%9C%A0%EC%82%AC%ED%95%A9%EB%8B%88%EB%8B%A4..png)
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는 awk
cmd의 작업을 수행합니다.
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
(또는 대부분의 ) 필드를 추출하려면 다음을 사용하는 방법이 있습니다.$n
grep
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
을 안정적으로 후처리할 수 없습니다.-P
df
Linux에서는 GNU가 동일한 정보를 사후 처리 가능하게 출력할 수 있는 경우 findmnt
( lsblk
예 stat -f
: df
옵션 참조 -J
)잘못된 UTF-8 문자열이 포함된 JSON을 처리하는 방법그리고 )-c
stat
답변2
을(를) 찾고 있는 것 같습니다 cut
.
귀하의 예에서는 cut -d' ' -f1
.