0

シェルスクリプトで、この回答で説明されているように、CVS ファイルを Excel 2003 XML に変換しようとしています: https://stackoverflow.com/a/150368

以下のセクションでは、Table 要素内に Row 要素を作成する方法を扱います。

ROWS=`wc -l < $IN_FILE | sed 's/ //g' `
COLS=`awk -F',' '{print NF; exit}' $IN_FILE`

#for each row in turn, create the elements
for r in {1 to ${ROWS}}
    do
    echo "<Row>\n" >> $OUT_FILE
    for c in {1 to ${COLS}}
    do
        echo "<Cell><Data>`sed -n '${r}p' $IN_FILE | cut -d "," -f ${c} `</Data></Cell> \n"
    done
    echo "</Row>\n" >> $OUT_FILE
done
echo "</Table>" >> $OUT_FILE

sed が行番号を変数として受け入れないため、問題が発生しています。

その列だけを抽出するためにカットにパイプして、その行だけを印刷する必要があります。

また、エコーの途中でコマンド置換を使用することについてはわかりません...

何かアドバイスはありますか?

4

2 に答える 2

2

一重引用符は、変数をリテラルにしています。このように分割してみることができます:

FOO=`sed -n "${r}p" $IN_FILE | cut -d "," -f ${c}`
echo "<Cell><Data>$FOO</Data></Cell> \n"
于 2013-10-15T15:58:42.973 に答える