• ベストアンサー

テキストファイルの最終行の改行コード削除

お世話になります。 SQLコマンドを発行し、csvファイルを自動生成させるシェルスクリプトを作ったのですが、最終行にある改行コードを削除して欲しいとの指示を受けて、その方法を調査。試行錯誤しているのですがよい方法が見つかりません。 最終行にある改行コードのみを削除するにはどうしたら宜しいでしょうか。 ご教示頂ければ幸いです。 宜しくお願い致します。                                以上

  • Revit
  • お礼率38% (13/34)

質問者が選んだベストアンサー

  • ベストアンサー
  • s_saike
  • ベストアンサー率46% (36/77)
回答No.1

UNIX系が使えると簡単なのですが。 Windowsから ftp で、binary モードでアップロードし、それを ascii モードでダウンロードするだけなので。 或いは、vi エディタでしたら、 :%s/^v^m// でできますので。 Windows の世界だけでやる方法については、他の方に譲ります。

Revit
質問者

補足

s_saikeさん 回答ありがとうございます。 お礼が遅れて申し訳ありません。 お教えいただきました、viエディタのコマンドを試してみたのですが、上手くいきませんでした。 特にエラーは出ていないですが、最終行の改行コードが残ったままでした。 質問した身で大変恐縮ですが、以下のコマンドで対処しました。 今後こちらの投稿を見る方のために、記述させて頂きます。 sed -e '$d' hoge.csv > hoge.out tail -1 hoge.csv | tr -d "\r\n" >> hoge.out hoge.csv⇒入力ファイル hoge.out⇒出力ファイル ※このコマンドは、他のエンジニアの方に泣きついて相談し、教えてもらいました。 今後とも宜しくお願い致します。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4845/10256)
回答No.2

ちょっとださいのですが、 awk 'NR>1{print A}{A=$0}END{printf"%s",A}'

Revit
質問者

お礼

notnotさん ご返信が遅れてすいません。お教えいただきましたコマンドを実行したのですが、最終行の改行コードが削除されません。 特にエラーは出ていないのですが・・・。 awkについて調べたのですが、対処方法がわかりませんでした。 改めてご教示頂ければ幸いです。 宜しくお願い致します。                                 以上

関連するQ&A

  • テキストファイルの最終行の削除

    C++Builder6です。 テキストファイルの最終行だけを削除する方法を 探しています。 詳しく言えば、ファイルを開けないで、最後にある 改行コード?のみを削除したいです。 よろしくお願いします。

  • CSVファイルの改行コード削除について

    初めまして。お世話になります。 現在Linux環境を使用しており、PHPのアップロードからcsvファイルをアップする機能を設けています。アップロードしたcsvファイルを元にシェルスクリプトでINSERT文を作成している機能になります。 csvファイル自体はローカルのエクセルから作成しています。 例としては、 A1,B1 A2,B2 となっています。 シェルスクリプトでは、アップされたcsvファイルのA1,B1の情報を読み取り変数をセットしていくという単純なものになっています。 具体的にシェルスクリプト内で行っている内容としては、 while read lineを用いて一行ずつ読み、awkを用いてカンマ区切りを指定してprint $1とprint $2で分けたものを変数にセットしています。 具体的には、 echo INSERT (略) VALUES \(\'$変数A(print $1)\',\'$変数B(print $2)'\)\; >> $TEMP という具合に変数をセットしています。 そこで現在問題となっているのが、変数B(print $2)にcsvファイルの改行コードが含まれている為、作成されるINSERT文が途中で改行されて出力されてしまっています。 この変数Bに含まれている改行コードを削除したいのですが、何か良い案はないでしょうか。 シェルスクリプト内の処理でなんとか解決策を模索しております。 何卒ご教授いただければ幸いです。 誠に申し訳ありませんが宜しくお願い致します。

  • 最終行の改行について

    CSVで出力しようとしてるのですが、 write #1,i;j などのように書くと、最終行の最後に改行が入ってしまいます。 これを解消する方法はないでしょうか。 よろしくおねがいします。

  • csvファイル改行コードの置換について

    お世話になります。 csvファイルで作成したデータを出力表示させるスクリプトで csvファイル内の改行コード(セル内)以後のデータが出力できません。 下記の置換で改行コード以後のデータが表示されません。 $abc =~ s/\r\n//g; $abc =~ s/\n//g; $abc =~ s/\r//g; csvファイル内の改行の数が多く、1行のデータが改行の為に、2行になったりしているので出力前に置換し表示させる方法です。 csvファイル作成時につく""は正常に置換しています。 似たような質問もあったのですが、少し違うようですので質問いたしました。 何卒、ご教授お願いいたします。

    • ベストアンサー
    • Perl
  • ファイル内の改行を削除し1行にするシェル

    お世話になっております。 ファイル(テキスト)内には、改行を含んだ複数の行が記述されています。 これを1行にして上書き保存するシェルを実行をするための シェルを作成したいと思っています。 ファイル内には以下のような値が改行を含んで入っています。 123 456 789 →これを、「123456789」と改行を取り除き、既存のファイルの上書き保存をしたい なお、改行を含んだ対象のファイルは、ファイル名にある文字を含む ファイルのみに対して行いたいのですが。 例:ファイル名に、「*abc*」、「*def*」、「*xyz*」を含むファイルが対象 改行を取り除くコマンドはわかるのですが、シェルにするプロセスがわかりません。 cat 入力ファイル名 | tr -d '\n' > 変換後の出力ファイル名 ご教授いただきたく、よろしくお願いします。

  • 改行のないテキストファイルに改行コードをつけたい

    いつもお世話になっています。 perlで困っていることがあるので、質問させてください。 大容量のテキストファイルを指定バイトで改行したいのですが、 どういった方法があるのでしょうか。 具体的には100000バイト近くあるファイルを200バイトごとに区切りたいのです。syswriteで何とかなるのかな?と思って試行錯誤しているのですが、 ファイルの末尾に1個改行が入るだけで、思ったような挙動をしてくれません。 正直かなりこまっているので、何かヒントをいただけないでしょうか。 よろしくお願いいたします。

  • vbsで文字列内の改行コードを置換もしくは削除

    ある帳票作成ソフトにCSVを渡して帳票を作成するのですが、カンマで区切られた文字列内に改行コードが存在すると、CSVの区切りを判定してくれず(改行とみなされてしまう)、うまく帳票を出力してくれません。vbsで改行コードを削除、もしくは何か違う文字に置き換えしようと思うのですが、vbsにはうといためよくわかりません。どなたかご教授してもらえないでしょうか?。やりたいことは 元のCSV 【1行目】AAAAAAAAAA,BBBBB<改行コード>BBBBBB 【2行目】CCCCCCCCC,DDDDDDDDDD 変換後のCSV 【1行目】AAAAAAAAAA,BBBBBBBBBB(もしくはAAAAAAAAAA,BBBBB@BBBBB) 【2行目】CCCCCCCCC,DDDDDDDDDD 行末の改行コードまで変換してはだめです。文字コードはUTF-8です。 よろしくお願い致します。

  • 特定の改行コードだけ削除する

    CSVファイルを変換するPGを書きたいのですが、 変換したいCSVには改行コード\nと\r\nが混在しています。 改行コード\r\nはそのままにして \nだけ削除したいのですが どのように書けばよろしいのでしょうか。 Perlは5.12.2です。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • CSVファイルの改行コード判別

    CSVファイルをLine Inputメソッドで1行毎に読み込みたいのですが、 セル内の改行により、1行分として読み込む事ができません。 セル内の改行コードは「vbLf」が使用されているとの認識でいますが、 仮に「vbLf」が改行コードとして使用されていれば、メモ帳などで 開くと「vbLf」の部分は改行されないと思っています。 ところが、問題のCSVをメモ帳で開くとセル内改行部分も改行されて 表示されます。 Line Inputメソッドの1行分は、改行コード「vbCrLf」までで、 改行される位置がメモ帳で開いた結果と同じになります。 そうなると、セル内の改行に使用されている改行コードに何が 使用されているのでしょうか? 環境は、Windows7、EXCEL2013です。

  • Access2003で特定列の改行コードを削除してCSVへエクスポート

    またまた、質問させていただきます^^; Access2003にてCSVデータを一旦インポートして、クエリなどを使いデータを編集し、別のテーブルへ追加クエリを使用して吐き出し、そのテーブルのデータ全てをCSVファイルへエクスポートする、といった処理をしております。 はじめに取り込むCSVデータが、セル内(エクセルの編集画面でたとえさせていただきます)で沢山改行されているデータで、それをアクセスに取り込むと改行は一旦なくなったように、見えるのですが、エクスポートするとやはり改行コードが着いたままエクスポートされます。 この改行コードをAccessの処理で削除したいのですが出来るのでしょうか?CSV内の改行全てを削除するのではなく、特定列内(例えばC列など)のセル内の改行コードのみの削除です。 エクセルのClean関数なども試しましたがAccessの処理で一括してしまいたいのです。 TeraPad、秀丸などのテキストエディタで改行コードの置換をすると全て消えてしまい、CSVの行を意味する改行コードまで消えてしまうので使えないし。。。 皆様、お知恵をおかし下さい!お願いします。