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

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

나는 입력 파일(열로 구성된 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모두패턴이 각 라인에서 발생하는 횟수입니다. 패턴이 없으면 첫 번째 라인만 교체됩니다. 내가 준 패턴은 (공백 1개) 뒤에 0개 이상의 (즉, 의미하는 것입니다 *) 공백 ( *)이 있고, 로 바꾸라고 했습니다 ,. 이는 기본적으로 "하나 이상의 공백을 쉼표로 대체"한다는 의미입니다.

관련 정보