2016-09-14 7 views
0

こんにちは今、私はsybase sqlから何らかのデータを取り出していて、それをExcelシートに貼り付けてメールを送信します。問題はすべての列であり、その値は一行になっていません。これを一列に並べる必要があります。ExcelでSQL行を貼り付けるときにキャリッジリターンと改行を取り除く

私はこれについて少し調べて、キャリッジリターンと改行のために起こっていることを発見しました。 *フィールドを使用して行をフェッチしていますが、特定の列はフェッチしていません。上記のコマンドが、無使用するために使用

sed "s/\r\n/g" $LOG > temp_log.txt

。キャリッジリターンを取り除く最良の方法は何でしょうか。コードサンプルはいくつかの説明で高く評価されています。ありがとう

+0

bash: 'sed $ 's/[\ r \ n] // g'" $ LOG "> temp_log.txt'ならばbash:' sed $(printf 's/[\ r \ n ] // g ') "$ LOG"> temp_log.txt' –

答えて

1

編集:最初のコメントの後、私は元の質問に気づいた。
問題は前の手順で発生しています。前のステップでは、isqlによって行が折りたたまれました。どのラインを1つのレコードとして一緒に貼り付けるべきかを予測することは困難であるため、ダメージを修復することは非常に困難です。
元の問題は、より多くのデータを1行に入れるようにisqlに指示することで取り除くことができます。isql -w 2000
ラインを一緒に結合することを知りたい場合は、trを使用できます(ライン操作にはsedを使用してください)。 $ LOGは、スペースを含むいくつかのパス/ファイルがある場合は一緒にすべての行を参加 が

cat $LOG | tr -d "\r\n" > temp_log.txt 

で可能である、上記のコマンドは失敗します。そして、おそらく小文字で独自の変数を書くことに使用し、変数のために括弧を使用します:

cat "${log}" | tr -d "\r\n" > temp_log.txt 

TRは、単一の文字を探して、それらの組み合わせのためのナットなので、それはまた、単一\nが削除されますされています。

そして、あなたはcatを避けたい、あなたはすべての列の長さの合計が何であるかを知っているとき、あなたはtrfold -w totallengthを試すことができますが、ISQLが持っているときにのみ機能します

tr -d "\r\n" < "${log}" > temp_log.txt 

にこれを改善すべてのフィールドを空白(タブではなく)で全長に埋めました。

+0

あなたの提案をすべて試してみたところ、結果は今は1行にまとめられているようです。 –

+0

私はあなたが望んだと思った。すべてのヘッダーを1行に、各レコードを1行にする場合は、出力の行の長さを拡張するために 'isql -w 2000'を使用してみてください。 –

+0

ありがとうございました。私はそれを正しくマークする前に、答えを修正してください。 –

関連する問題