Unix에서 세 번째, 첫 번째, 다섯 번째 쉼표 뒤의 텍스트만 순서대로 표시하는 방법은 무엇입니까?

Unix에서 세 번째, 첫 번째, 다섯 번째 쉼표 뒤의 텍스트만 순서대로 표시하는 방법은 무엇입니까?

주어진 입력 텍스트의 세 번째, 첫 번째, 다섯 번째 쉼표 이후의 순서로 텍스트를 표시하고 싶습니다.

작업을 수행했지만 cut -d ',' -f 3,1,5원하는 순서를 지키지 않았습니다. 대신 텍스트를 오름차순(1, 3, 5)으로 표시합니다.

답변1

유틸리티 cut는 항상 입력과 동일한 순서로 필드를 출력합니다. 필드를 재정렬할 수 없습니다.

awk대신 사용하십시오 cut:

awk -F , 'BEGIN { OFS=FS } { print $3, $1, $5 }'

그러면 세 번째, 첫 번째, 다섯 번째 쉼표로 구분된 필드가 순서대로 출력됩니다. 출력과 입력에 동일한 필드 구분 기호를 사용합니다.

예:

$ echo "a,b,c,d,e,f" | awk -F , 'BEGIN { OFS=FS } { print $3, $1, $5 }'
c,a,e

CSV로 인코딩된 필드를 포함할 수 있는 실제 CSV 파일로 작업하는 경우 csvcut다음을 사용하세요.csvkit:

csvcut -c 5,1,3  file.csv

csvcut예를 들어 열 이름을 사용할 수도 있습니다 .

csvcut -c name,age,address  file.csv

당신은 또한 볼 수 있습니다 csvcut --help.

관련 정보