모든 명령 출력에 대해 표시되는 필드 순서 변경

모든 명령 출력에 대해 표시되는 필드 순서 변경

주어진 명령에서 필드 순서를 변경하는 방법은 무엇입니까?

예를 들어 의 출력을 살펴보겠습니다 ls -l. 기본적으로 파일 이름은 출력의 마지막 필드로 나타납니다. 파일 이름이 표시되는 첫 번째 필드가 되도록 이 출력을 무엇으로 파이프할 수 있습니까?

처음에는 cut 명령을 사용하려고 생각했지만 필드가 -f 옵션에 전달되는 순서에 관계없이 항상 원래 순서대로 출력됩니다.

참고: 이는 단순한 예일 뿐이지만 ls -l, 열에 데이터를 출력하는 모든 명령에 사용할 수 있는 일반적인 관용어를 찾고 싶습니다. 구분된 데이터에도 적용할 수 있다면 좋을 것 같습니다.

답변1

고정된 수의 필드에 대해 사용할 수 있습니다 awk. 예를 들어 두 번째와 네 번째 필드를 바꿉니다.

command | awk '{ t = $2; $2 = $4; $4 = t; print }' | column -t

그러나 안타깝게도 파일 이름에 공백이 포함될 수 있으므로 고정된 수의 필드(공백으로 구분)가 없습니다. 이것이 ls -l출력 구문 분석을 권장하지 않는 이유입니다.ls -l

관련 정보