다음 내용이 포함된 csv 파일이 있습니다.
col1, col2, col5
1, 1, 1
2, 2, 2
3, 3, 3
4, 4, 4
헤더가 포함되어 있지만 null 값이 포함된 파일의 세 번째 위치에 열을 추가해야 합니다.
col1, col2, col3, col4
1, 1, , 1
2, 2, , 2
3, 3, , 3
4, 4, , 4
cat, sed, awk 또는 cut과 같은 Linux 명령 중 하나를 사용하여 이를 수행할 수 있는 방법이 있습니까?
나는 cut을 사용하면 열별로 파일을 수정할 수 있다는 것을 알고 있습니다 cut -d , -f1,2,3 file1 > file2
. 하지만 사용자 정의 열을 추가하는 옵션은 없는 것 같습니다.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
sed
결과를 얻기 위한 명령은 다음과 같습니다 .
sed '1s/\(.*,\)\([^,]*\)$/\1col3,\2/;
2,$s/\(.*,\)\([^,]*\)$/\1,\2/' file.csv
,
이것은 행의 마지막 것을 찾아 다음으로 바꿉니다.
col3,
첫 번째 줄에,
다른 모든 라인에서는
이 명령은 원하는 출력을 에 인쇄합니다 stdout
. 파일을 그 자리에서 편집하려면 -i
위 명령으로 전환하세요.
답변2
$ awk 'BEGIN { FS=","; OFS=",\t" };
FNR == 1 { print $1,$2,"col3","col4" };
FNR > 1 { print $1,$2,"\t",$3 }' file.csv
col1, col2, col3, col4
1, 1, , 1
2, 2, , 2
3, 3, , 3
4, 4, , 4