주어진 명령에서 필드 순서를 변경하는 방법은 무엇입니까?
예를 들어 의 출력을 살펴보겠습니다 ls -l
. 기본적으로 파일 이름은 출력의 마지막 필드로 나타납니다. 파일 이름이 표시되는 첫 번째 필드가 되도록 이 출력을 무엇으로 파이프할 수 있습니까?
처음에는 cut 명령을 사용하려고 생각했지만 필드가 -f 옵션에 전달되는 순서에 관계없이 항상 원래 순서대로 출력됩니다.
참고: 이는 단순한 예일 뿐이지만 ls -l
, 열에 데이터를 출력하는 모든 명령에 사용할 수 있는 일반적인 관용어를 찾고 싶습니다. 구분된 데이터에도 적용할 수 있다면 좋을 것 같습니다.
답변1
고정된 수의 필드에 대해 사용할 수 있습니다 awk
. 예를 들어 두 번째와 네 번째 필드를 바꿉니다.
command | awk '{ t = $2; $2 = $4; $4 = t; print }' | column -t
그러나 안타깝게도 파일 이름에 공백이 포함될 수 있으므로 고정된 수의 필드(공백으로 구분)가 없습니다. 이것이 ls -l
출력 구문 분석을 권장하지 않는 이유입니다.ls -l