私は同様の質問を受けたことを知っていますが、それは私にはうまくいかないようです。 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