나는 비슷한 질문을 받았음을 알고 있지만 그것은 나에게 효과가 없는 것 같습니다. 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