.csv 파일에 새 열을 삽입하는 방법은 무엇입니까?

.csv 파일에 새 열을 삽입하는 방법은 무엇입니까?

예시 데이터:

"Monday","12345","Friday" 

위 파일에서 12345와 Friday 사이에 새 열을 추가하고 싶습니다.

어떻게 해야 하나요?

답변1

일부 무거운 도구(예: sed또는 awk)를 포함하지 않는 경우:

paste -d',' <(cut -d',' -f-2 file) column.file <(cut -d',' -f3- file)

여기서는 추가하려는 열이 이미 파일에 저장되어 있다고 가정합니다 column.file.

답변2

데이터가 표시된 것처럼 간단하다고 가정하면 다음을 수행할 수 있습니다.

awk -F, -v OFS=, '{k=$3; $3="\"new text\""; $4=k}1' file

또는,

perl -F, -lane 's/$F[1]/$F[1],"new text"/; print' file

그러나 다음과 같이 중첩된 쉼표가 포함될 수 있는 데이터에는 실패합니다.

"foo", "bar,baz", "bar" 

위의 파일은 유효한 csv 파일이지만 이러한 솔루션에서는 3개가 아닌 4개의 필드가 있는 것으로 처리합니다. 데이터에 유사한 상황이 포함될 수 있는 경우 적절한 csv 파서를 사용해야 합니다.

답변3

방금 같은 문제가 있었지만 빈 필드를 원했기 때문에 잘라내기/붙여넣기 답변이 제대로 작동하지 않았으므로 다음과 같이 작동했습니다.

  1. 삽입할 파일에 몇 줄이 있는지 확인하세요.

    wc -l file.csv
    
  2. 1.30이 주어졌다고 가정 하고 bash 루프를 사용하여 필드 3과 4 사이에 빈 필드를 삽입합니다.

    paste -d, <(cut -d, -f-3 file.csv) <(for i in `seq 1 30`; do echo; done) <(cut -d, -f4- file.csv) > fileNew.csv
    

관련 정보