파일을 탭으로 구분된 텍스트 및 스프레드시트로 저장

파일을 탭으로 구분된 텍스트 및 스프레드시트로 저장

입력 파일(열로 구성된 txt 파일)의 내용을 스프레드시트로 저장하기 위해 Linux에서 다음 명령줄을 사용하고 있습니다.

less input_file > out_put.csv

내 출력 파일은 여기에 이미지 설명을 입력하세요

문제는 출력 스프레드시트에 있습니다. 입력 파일의 모든 열은 출력 파일(스프레드시트 CSV)의 한 열에 함께 붙어 있습니다.

txt 파일을 탭으로 구분된 텍스트와 스프레드시트로 저장하는 것이 더 효율적이도록 간단한 코드를 수정하려면 어떻게 해야 합니까?

답변1

우선, less단순한 호출기이며, 파일을 읽을 수 있게 해주는 도구입니다. 수행 중인 작업은 input_file을 out_put.csv( cp input_file out_put.csv)에 복사하는 것과 정확히 동일합니다. 어떤 식으로든 콘텐츠를 변경하지 않습니다.

따라서 예를 들어 를 사용하여 스프레드시트로 읽으려면 libreoffice스프레드시트 애플리케이션을 연 다음 을 열고 input_file공백을 열 구분 기호로 사용해야 합니다.

        구분 기호로 공백이 선택된 libreoffice 텍스트 가져오기 대화 상자

이제 정말로 파일을 다음으로 변환하고 싶다면반점구분된 값 형식( .csv)을 사용하려면 쉼표를 추가해야 합니다. 이 명령은 각 줄의 모든 공백을 쉼표로 바꾸고 출력을 다음과 같이 저장합니다 output.csv.

sed 's/  */,/g' input_file > output.csv

위의 명령은 sed다음과 같습니다. 여기서는 해당 명령을 사용하고 있습니다.대체 연산자. 일반적인 형식은 으로 s/pattern/replacement/대체됩니다 . 결국 교체하게됩니다.patternreplacementg모두각 줄의 패턴 발생이 없으면 첫 번째 패턴만 대체됩니다. 내가 준 패턴은 (공백) 뒤에 0개 이상의 (즉, *) 공백 ( *)이 오는 것이었고 로 바꾸라고 말했습니다 ,. 이는 기본적으로 "하나 이상의 공백을 쉼표로 바꿉니다"를 의미합니다.

관련 정보