쉼표에서 열로 변환(sed)

쉼표에서 열로 변환(sed)

다음 형식의 일부 텍스트가 포함된 *.csv 파일이 있습니다.

a, b, c 
d, e, f
g, h, i

이것을 3개의 열이 있는 *.xls 파일로 변환하고 싶습니다. "sed"를 사용하여 이 작업을 수행할 수 있습니까?

편집: 이것은 단지 예일 뿐입니다. 내가 관심 있는 것은 기호를 열 이동으로 바꾸는 것입니다(불가능하지 않은 경우). 다음으로 다음과 같이 텍스트를 조작하고 싶습니다.

단일 열

a[kg/m] 

2열 형식

a     [kg/m]

하지만 이것이 가능한지는 잘 모르겠습니다! 하지만 "sed"가 *.csv 파일을 대체하고 수정하기 위해 많은 트릭을 수행할 수 있다는 것을 알고 있습니다.

답변1

귀하의 요청의 두 번째 부분을 올바르게 이해했는지 모르겠습니다.

단일 열 a[kg/m]에서 2열 형식으로a [kg/m]

그러나 이렇게 하면 csv가 탭으로 구분된 파일로 변환되고 [Kg/m] 앞에 추가 열이 추가됩니다.

sed -e 's/,/\t/g' -e 's:\(\[Kg/m\]\):\t\1:g' afile.csv > newfile.csv

예:

$ cat afile.csv
a[Kg/m],b[Kg/m],c
d[Kg/m],e[Kg/m],f
g[Kg/m],h[Kg/m],i

$ sed -e 's/,/\t/g' -e 's=\(\[Kg/m\]\)=\t\1=g' afile.csv > newfile.csv

$ cat newfile.csv
a       [Kg/m]  b       [Kg/m]  c
d       [Kg/m]  e       [Kg/m]  f
g       [Kg/m]  h       [Kg/m]  i

이 sed 명령에는 두 개의 스크립트가 있습니다.

  • -e 's/,/\t/g'','다음 으로 교체<tab>
  • -e 's=\(\[Kg/m\]\)=\t\1=g'[Kg/m]무엇이든 교체<tab>[Kg/m]

이제 탭으로 바꾸지 않고도 다음을 사용하여 CSV 파일에 추가 열을 추가할 수 있습니다.

$ sed -e 's=\(\[Kg/m\]\)=,\1=g' afile.csv > newfile.csv
$ cat newfile.csv
a,[Kg/m],b,[Kg/m],c
d,[Kg/m],e,[Kg/m],f
g,[Kg/m],h,[Kg/m],i

관련 정보