odsをtxtに変更しました。 ods のすべての列は、タブ区切り文字を使用して正しく配布されます。

odsをtxtに変更しました。 ods のすべての列は、タブ区切り文字を使用して正しく配布されます。

私は同様の質問を受けたことを知っていますが、それは私にはうまくいかないようです。 odt2txt、unoconvを試して、.txtの代わりに.csvに変換しようとしました。 odsファイルをodsのすべての列がタブ区切り記号として適切に展開され、行も正しい場所にあるtxtファイルに変更する方法(bashスクリプト内)を見つける必要があります。ただし、これまで試すたびにファイルが間違って変換されました。

事前にありがとう

サンプルの入力と出力を提供しますが、基本的に同じように見えたいのですが、入力はodsの複数の列であり、出力は同じ列を持ちますが、タブ区切りのテキストファイルです。

一部の列の間に空の行があります(これにより問題が発生する可能性があります)。

ベストアンサー1

たとえば、CSVに変換し、unoconvCSVをタブ区切りの列に変換します。

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

おすすめ記事