0

CSVファイルをインポートしてWeb上のどこかに送信するbashスクリプトを作成しようとしています。手書きのCSVを使用する場合、つまり:

summary,description
CommaTicket1,"Description, with a comma"
QuoteTicket2,"Description ""with quotes"""
CommaAndQuoteTicke3,"Description, with a commas, ""and quotes"""
DoubleCommaTicket4,"Description, with, another comma"
DoubleQuoteTicket5,"Description ""with"" double ""quoty quotes"""

READコマンドはファイルを正常に読み取ることができます。ただし、Excelで「同じファイル」(つまり、同じフィールドを使用)を作成すると、READは正常に機能せず、通常は最初の値を読み取るだけで、それだけです。

Bashスクリプトは比較的新しいので、誰かが私のコードに問題があると思ったらアップロードしますが、Excel for Macがファイルを保存する方法に問題があるようで、誰かがそれについて考えているかもしれないと思いました。

あなたたちが貢献できるものは何でも大歓迎です。乾杯!

4

1 に答える 1

3

デフォルトでは、MacのExcelはキャリッジリターン文字を使用して新しいレコードを示しますが、bashは改行文字を使用してレコードを探します。Excel for Macでファイルを保存するときは、文字エンコード(ファイルの保存時に使用できるオプション)をDOSやWindowsなどに変更してください。これらは、キャリッジリターンと改行が表示されます。 「読み取り可能」であること。

trまたは、でファイルを処理し、すべてのCRをLFに変換することもできます。

tr '\r' '\n' < myfile.csv > newfile.csv

これが実際に問題であるかどうかを確認する1つの方法は、を使用odしてファイルを検査することです。次のようなものを使用します:

od -c myfile.csv

そして、行末文字を探します。

最後に、bashの内部IFS変数を調べて、「\r」を含めるように設定することもできます。参照:http ://tldp.org/LDP/abs/html/internalvariables.html

于 2012-08-20T03:18:48.330 に答える