다음 형식의 일부 텍스트가 포함된 *.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