![모든 명령 출력에 대해 표시되는 필드 순서 변경](https://linux55.com/image/17866/%EB%AA%A8%EB%93%A0%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%97%90%20%EB%8C%80%ED%95%B4%20%ED%91%9C%EC%8B%9C%EB%90%98%EB%8A%94%20%ED%95%84%EB%93%9C%20%EC%88%9C%EC%84%9C%20%EB%B3%80%EA%B2%BD.png)
주어진 명령에서 필드 순서를 변경하는 방법은 무엇입니까?
예를 들어 의 출력을 살펴보겠습니다 ls -l
. 기본적으로 파일 이름은 출력의 마지막 필드로 나타납니다. 파일 이름이 표시되는 첫 번째 필드가 되도록 이 출력을 무엇으로 파이프할 수 있습니까?
처음에는 cut 명령을 사용하려고 생각했지만 필드가 -f 옵션에 전달되는 순서에 관계없이 항상 원래 순서대로 출력됩니다.
참고: 이는 단순한 예일 뿐이지만 ls -l
, 열에 데이터를 출력하는 모든 명령에 사용할 수 있는 일반적인 관용어를 찾고 싶습니다. 구분된 데이터에도 적용할 수 있다면 좋을 것 같습니다.
답변1
고정된 수의 필드에 대해 사용할 수 있습니다 awk
. 예를 들어 두 번째와 네 번째 필드를 바꿉니다.
command | awk '{ t = $2; $2 = $4; $4 = t; print }' | column -t
그러나 안타깝게도 파일 이름에 공백이 포함될 수 있으므로 고정된 수의 필드(공백으로 구분)가 없습니다. 이것이 ls -l
출력 구문 분석을 권장하지 않는 이유입니다.ls -l