입력 파일(열로 구성된 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
공백을 열 구분 기호로 사용해야 합니다.
이제 정말로 파일을 다음으로 변환하고 싶다면반점구분된 값 형식( .csv
)을 사용하려면 쉼표를 추가해야 합니다. 이 명령은 각 줄의 모든 공백을 쉼표로 바꾸고 출력을 다음과 같이 저장합니다 output.csv
.
sed 's/ */,/g' input_file > output.csv
위의 명령은 sed
다음과 같습니다. 여기서는 해당 명령을 사용하고 있습니다.대체 연산자. 일반적인 형식은 으로 s/pattern/replacement/
대체됩니다 . 결국 교체하게됩니다.pattern
replacement
g
모두각 줄의 패턴 발생이 없으면 첫 번째 패턴만 대체됩니다. 내가 준 패턴은 (공백) 뒤에 0개 이상의 (즉,
*
) 공백 ( *
)이 오는 것이었고 로 바꾸라고 말했습니다 ,
. 이는 기본적으로 "하나 이상의 공백을 쉼표로 바꿉니다"를 의미합니다.