.txt
형식을 손상시키지 않고 탭으로 구분된 파일을 CSV 파일로 변경하는 방법은 무엇입니까 ?
유형을 에서 으로만 변경했지만 .txt
탭 .csv
으로 구분된 모든 데이터는 동일한 Excel 셀에 배치됩니다.
그래서 제가 여기서 묻고 있는 것은 다음과 같습니다.
- 여러 파일의 탭 문자를 쉼표로 변경하는 방법은 무엇입니까?
.txt
그러면 파일을 에서 로 어떻게 변경합니까.csv
?
답변1
다음을 수행할 수 있습니다.
perl -MText::CSV -F'\t' -i.orig -lape '
BEGIN{$c = Text::CSV->new({binary=>1, eol=>""})}
$_ = $c->string if $c->combine(@F)' ./*.txt
로 변환하다적절한CSV( perldoc Text::CSV
CSV 형식이 필요한 경우 참조) 필요한 것이 탭을 쉼표로 변환하는 것뿐이라면 tr '\t' , < file.txt > file.csv
.
답변2
사용csvkit
:
입력 파일이 다음과 같다고 가정합니다.
a 10,000 e u
a o e u
a o "hello world" u
a o e u
hello
여기서 모든 필드는 탭으로 구분되며, 및 사이에는 탭 문자도 있습니다 world
(인용문에 표시된 것처럼 두 단어가 동일한 필드에 속하더라도).
$ csvformat -t file.txt
a,"10,000",e,u
a,o,e,u
a,o,hello world,u
a,o,e,u
이 옵션은 입력이 탭으로 구분되어 있음을 유틸리티에 -t
알려줍니다 .csvformat
올바르게 인용 되었으며 10,000
주변 인용문은 hello<tab>world
이제 명시적이므로 제거되었습니다.
모든 필드를 인용하도록 강제합니다.
$ csvformat -t -U 1 file.txt
"a","10,000","e","u"
"a","o","e","u"
"a","o","hello world","u"
"a","o","e","u"
입력이 다음과 같은 다른 따옴표 문자를 사용하는 경우
$ cat file.txt
a 10,000 e u
a o e u
a o 'quote: "hello world"' u
a o e u
그런 다음 다음을 수행하십시오.
$ csvformat -t -q "'" file.txt
a,"10,000",e,u
a,o,e,u
a,o,"quote: ""hello world""",u
a,o,e,u
입력 데이터에 작은따옴표 사용을 지정합니다 -q "'"
.
.txt
여러 파일에 대해 이 명령을 실행하려면 처리하려는 경우 탭으로 구분된 각 파일을 CSV로 변환하세요.현재의목차:
for name in ./*.txt; do
csvformat -t "$name" >"${name%.txt}.csv"
done
이 비트는 파일 이름에서 확장자를 제거 ${name%.txt}.csv
하고 확장자를 추가합니다. 이는 다음과 같이 쓸 수도 있습니다..txt
.csv
for name in ./*.txt; do
csvformat -t "$name" >"./$( basename "$name" .txt ).csv"
done
그러면 변경되지 않은 원본 파일 세트 .txt
와 해당 .csv
파일이 생성됩니다.
답변3
다음 명령을 시도해 볼 수 있습니다
sed 's/\t/,/g' yourtab.txt > updatefile.csv