ods를 txt로 변경했습니다. ods의 모든 열은 탭 구분 기호를 사용하여 올바르게 배포됩니다.

ods를 txt로 변경했습니다. ods의 모든 열은 탭 구분 기호를 사용하여 올바르게 배포됩니다.

나는 비슷한 질문을 받았음을 알고 있지만 그것은 나에게 효과가 없는 것 같습니다. odt2txt, unoconv를 시도하고 .txt 대신 .csv로 변환을 시도했습니다. ods 파일을 ods의 모든 열이 탭 구분 기호로 적절하게 배포되고 행도 올바른 위치에 있는 txt 파일로 변경하는 방법(bash 스크립트 내에서)을 찾아야 합니다. 그러나 지금까지 시도할 때마다 파일이 잘못 변환되었습니다.

미리 감사드립니다

샘플 입력 및 출력을 제공하지만 기본적으로 동일하게 보이길 원하지만 입력은 ods의 여러 열이고 출력은 동일한 열을 가지지만 탭으로 구분된 텍스트 파일입니다.

일부 열 사이에 빈 행이 있습니다(이로 인해 문제가 발생할 수 있음).

답변1

예를 들어 CSV로 변환 unoconv한 다음 CSV를 탭으로 구분된 열로 변환합니다.

unoconv다음은 Python을 사용하여 이 작업을 수행하는 Bash 스크립트입니다.

#!/bin/bash
if [ $# -lt 1 -o "$1" = "-h" -o "$1" = "--help" ]; then
    exec >&2
    printf '\n'
    printf 'Usage: %s [ -h | --help ]\n' "$0"
    printf '       %s FILE.ods [ ... ] [ > output.txt ]\n' "$0"
    printf '\n'
    exit 0
fi

unoconv --stdout -f csv "$@" | python -c '
import sys
import csv
from string import maketrans
whitespace = maketrans("\t\r\n", "   ")
def fix(s):
    return str(s).translate(whitespace)
for row in csv.reader(sys.stdin):
    print("\t".join(map(fix, row)))'

이는 필드에 탭이나 줄 바꿈(있는 경우 공백으로 대체)이 포함되지 않도록 보장한다는 점에서 편집증적입니다. 그렇지 않으면 출력이 혼동될 수 있습니다.

위의 내용을 (임시로) 로 저장했다면 ods2tsv다음을 사용하여 설치할 수 있습니다.

sudo install -o root -g root -m u=rwx,g=rx,o=rx ods2tsv /usr/bin/ods2tsv

다음과 같이 사용할 수 있습니다.

ods2tsv somefile.ods > your.txt

관련 정보