CSV 파일의 첫 번째 열과 두 번째 열 바꾸기

CSV 파일의 첫 번째 열과 두 번째 열 바꾸기

나는 배쉬를 사용하고 있습니다. 대략 다음과 같은 두 개의 데이터 열이 포함된 CSV 파일이 있습니다.

 num_logins,day
 253,2016-07-01
 127,2016-07-02

첫 번째 열과 두 번째 열을 바꾸고 싶습니다(날짜 열을 첫 번째 열로 만들기). 그래서 나는 이것을 시도했다

awk ' { t = $1; $1 = $2; $2 = t; print; } ' /tmp/2016_logins.csv 

그러나 결과 출력은 동일합니다. 올바르게 전환하려면 위의 awk 문에서 무엇을 놓치고 있나요?

답변1

여기 있어요:

awk -F, '{ print $2 "," $1 }' sampleData.csv 

답변2

기본 구분 기호는 공백/탭이기 때문입니다. 쉼표가 아닙니다. 원본 코드를 가져와서 -F,솔루션을 추가하세요.

$ awk -F, ' { t = $1; $1 = $2; $2 = t; print; } ' /tmp/2016_logins.csv
day num_logins
2016-07-01  253
2016-07-02  127
$

{$0=$2" "$1}1동일한 결과를 얻으 려면 다시 제거하십시오 .

$ awk -F, '{$0=$2" "$1}1' /tmp/2016_logins.csv
day num_logins
2016-07-01  253
2016-07-02  127
$

답변3

이 답변은xsv대신 awk열이 많은 경우 유용합니다.

xsv cat columns <(xsv select 1-4,6- input.csv) <(xsv select 5 input.csv) > output.csv

관련 정보