テキストファイル(tsv)の改行方法について

このQ&Aのポイント
  • WindowsXP環境でtsvファイルを扱う際に、改行がされない問題について解決方法をお伝えください。
  • 現在、改行がない状態のtsvファイルの3つめのタブを改行に変更したいです。
  • VBScriptを使用して改行を実現しようとしていますが、うまくいっていません。他の方法で改行を行う手段があれば教えてください。
回答を見る
  • ベストアンサー

テキストファイル(tsv)を改行したい

WindowsXP環境でtsvファイルを扱いたいのですが、 このtsvファイルが改行無く出力されています。 このファイルに改行を入れたいと思っています。 【例】 (現状) AAA   100   6   BBB   200   5   CCC   150   4   ・・・ ↓ (結果)3つめのタブを改行に変更したい。 AAA   100   6 BBB   200   5 CCC   150   4 ・ ・ ・ 新規ソフトウェアのインストールやフリーソフトを導入できない端末なので、 VBScriptで実現できないかと思っているのですが、なかなかうまくいきません。 どなたかお知恵を拝借いただけませんか? よろしくお願いします。

  • PTCr
  • お礼率100% (5/5)

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

とりあえずこういうスクリプトですね。 Dim FSO Dim InFile Dim OutFile Dim Text, Char, Count Set FSO = CreateObject("Scripting.FileSystemObject") Set InFile = FSO.OpenTextFile("C:\~", 1) Set OutFile = FSO.CreateTextFile("C:\~", True) Do Until InFile.AtEndOfStream     Count = 0     Text = ""     Do Until InFile.AtEndOfStream         Char = InFile.Read(1)         If Char = vbTab Then             Count = Count + 1             If Count = 3 Then Exit Do         End If         Text = Text & Char     Loop     OutFile.WriteLine Text Loop OutFile.Close InFile.Close ※ファイル名は適当に変更してください。 ※インデントに漢字空白を使用しています。  コピペ注意

PTCr
質問者

お礼

実現できました! 非常に素早いご教授ありがとうございます。

その他の回答 (4)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

tsvファイルが複数行有るのか解らなかったけど、取りあえず複数行あってもいい様にしてみました。 例ではc:\test.tsvを整形した物をc:\test2.tsvに出力しています。 Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("c:\test.tsv") Set outFile = fso.CreateTextFile("c:\test2.tsv") Do Until inFile.AtEndOfStream   nTab = 0   tempLine = inFile.ReadLine   For i = 1 To Len(tempLine)     one = Mid(tempLine, i, 1)     If one = vbTab Then            nTab = nTab + 1       If nTab >= 3 Then         one = vbCrLf         nTab = 0       End If     End If     outFile.Write one   Next   outFile.Write vbCrLf Loop    inFile.Close outFile.Close

PTCr
質問者

お礼

実現できました。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

文字列ストリームを変数に読み込み、Instr(VBScriptの関数にもあり、VB(A)と同じ)でTABコード(水平タブ,多分Chr(9)) を見つけ、3個目ごとにvbCrlLf に置き換えていけば良いはず。 Instr関数は第1引数に開始位置を指定できるので、尺取り虫的に、開始位置をずらしては。Instr関数をかける。見つかった場所に次の文字が探索開始場所にする。 TABコードは、VBScriptでもvbTabが使えるはず。 >、なかなかうまくいきません。 質問者が使用経験がすくないだけでは。 データ例を作っても、質問者の場合と同じかどうか判らないので、コードはここでは省略する。 16進表示でデータの一部でも挙げれば情況がわかるが。

PTCr
質問者

お礼

> 質問者が使用経験がすくないだけでは。 お察しの通りです。この件で初めてVBScriptに触れました。 今後も勉強します。ありがとうございました。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

>3つめのタブを 改行コードよりは悩みどころでは?。 改行はCRLF、ここではVBCRLFか。 CRとLF、CRはCHR(13)でLFはCHR(10)です。 よってCHR(13)&CHR(10)。 TABはCHR(9) CHR(9)を変数xに格納して、INSTRで3つめを見つける。 そんなところか・・・。

PTCr
質問者

お礼

参考になりました。 ご回答ありがとうございます。

回答No.1

CHR関数だったかな文字コードを直接指定して改行を出してあげればいけるはずですよ WScript.Echo "こそこそ" & CHR(13) & CHR(10) & "ごにょごにょ"

PTCr
質問者

お礼

参考になりました。 ご回答ありがとうございます。

関連するQ&A

  • Accessのデータをテキストファイルで出力する方法を教えてください。

    Accessのデータをテキストファイルで出力する方法を教えてください。 クエリで抽出したデータをテキストファイルに出力したいのですが、下記のような記述では""や,で区切られてしまいます。 DoCmd.TransferText acExportDelim, "", "クエリ名", "出力ファイル.txt" フィールドごとに改行して出力する方法はないでしょうか? <クエリ結果> フィールド1  フィールド2  フィールド3 aaa      bbb      ccc <出力テキストファイル> aaa bbb ccc

  • 改行コードの変換について

    OS:Solaris2.6 改行コードをunixからms-dosへ、ms-dosからunixへ変換したいと思っています。 ながれとしては、ms-dosで作成したファイルをunixのほうで編集(プログラム) して、再びms-dosに戻すといったことがしたいと思っています。 そこで、 nkf -e aaa | tr '\r\n' '\n' > bbb nkf -e ccc | tr '\n' '\r\n' > ddd aaa:ms-dos ccc:編集後のファイル これでできると思ったのですが、dddの改行コードの表示がE'で Macintoshの改行コードになってしまします。 また、bbbのファイルですが改行が2回行われてしまいます。 例 aaa のファイルの内容 123 456 bbb のファイルの内容 123 456 どのようにすれば、解決できるか教えていただけないでしょうか? お願いします。

  • VBAでCSV内にある改行を取る方法

    あるシステムが吐くcsvファイルの項目の中に改行が入っているものがあります。 例) 01,aaa,bbb(改行)bbb,ccc(改行) 02,ddd,eee,fff(改行) 03,ggg(改行)ggg,hhh,iii(改行) このCSVファイルをエクセルのマクロで読み込んでシートに展開したい のですが、項目中にある改行で別レコードを認識してしまいます。 結果) A B C D ---+---+---+--- 01 aaa bbb  bbb ccc 02 ddd eee fff 03 ggg ggg hhh iii これを以下のようにしたいのですが・・・ A B C D ---+------+------+---- 01 aaa bbbbbb ccc 02 ddd eee fff 03 gggggg hhh iii どうやればよいでしょうか? ご教授お願いいたします。

  • [シェルの質問]改行と結合

    bsh初心者です。 よろしくお願いします。 1)下記のような","で区切られている場合、","を見つけたら  改行して出力したいです。 [入力] aaa,bbb,ccc, ddd,eee,fff [出力] aaa, bbb, ccc, ddd, eee, fff 2)下記のように、ある文字"aaa"をみつけたら、その次の行と結合して  出力したいです。 [入力] aaa: Hello! [出力] aaa:Hello! とこんな感じです。 awkとか使わないとできないでしょうか? awkはあんまり詳しくないので、できたら 記述例をいただけると幸いです よろしくお願いします。

  • PHPでテキストファイルを読み込み変数に代入する

    PHP超初心者ですみません。 aaa:111 bbb:222 ccc:333 444444 という内容のテキストファイルをPHPで読み込み aaa(変数名)=111(中身) bbb(変数名)=222(中身) ccc(変数名)=333\n444444(中身改行あり) という風にできないのでしょうか? いろいろ探しましたがわからなかったので よろしくお願い致します。

    • ベストアンサー
    • PHP
  • テキストエリアの改行を変換(初心者

    <textarea rows="5" cols="10" name="myname">AAA BBB CCC</textarea> 上の内容を送信して、 AAA BBB CCC こんな感じで改行してファイルに書き込みしたいのですが、そのままでは改行されず1行で書き込まれてしまいます。 1つずつ改行するにはどうすればいいのでしょうか よろしくお願いします。

    • ベストアンサー
    • Perl
  • [iPhone]改行をファイル出力する方法

    [iPhone]改行をファイル出力する方法 改行を含む文字列をファイル出力するにはどうするといいのでしょうか。 ファイル出力をNSString→NSData経由で行なっていますが、改行コード(\n)が改行されず、文字として'\n'が出力されてしまいます。 現在のコードは ------------- NSMutableString* mstr = [[NSAutoreleasePool alloc] init]; for (int i=0; i<3; i++) { NSString* str = [NSString stringWithFormat:@"%@,%@\n",@"aaa", @"bbb"]; [mstr appendString:str]; } NSData* out_data = [mstr dataUsingEncoding:NSUTF8StringEncoding]; [out_data writeToFile:@"/user/test.csv" atomically:YES]; [ファイルの内容] aaa,bbb\naaa,bbb\naaa,bbb\n ------------- '\n'を'\r'や'\n\r'にしても、改行されません。 どの様にコーディングするとよいのでしょうか、宜しくお願いします。

  • batファイル処理でのテキストファイルの内容変更

    batファイル処理のみにてテキストファイルの内容を変更する事は可能でしょうか。 例えば aaa=1111 bbb=2222 ccc=3333 ddd=4444 という内容のテキストファイルが存在し、batファイルにて aaa=1111 bbb=2222 ccc=5555 ddd=4444 というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。 宜しくお願いします。

  • batファイル処理でのテキストファイルの内容を編集

    batファイル処理のみにてテキストファイルの内容を編集する事は可能でしょうか。 例えば aaa=0 bbb=0 ccc=0 ddd=0 という内容のテキストファイルが存在し、batファイルにて aaa=0 bbb=1 ccc=1 ddd=0 というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。 宜しくお願いします。

  • CSVに外部テキストファイルを列として追加する方法

    こんにちは。 CSVファイル(base.csv)の先頭列に、別のテキストファイル(add.txt)の中身を新規の列として挿入したいと考えているのですが、よい方法がわかりません。。。 どうのような方法を使えば対応することができるでしょうか? どうぞよろしくお願いいたします。 ■CSVファイル(master.csv) title,developer_name,seller_name,primary_genre_name,application_url AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE ■テキストファイル(add.txt) id 000 111 222 333 ↓ ■目標としたファイル(master.csv) id,title,developer_name,seller_name,primary_genre_name,application_url 000,AAA,BBB,CCC,DDD,EEE 111,AAA,BBB,CCC,DDD,EEE 222,AAA,BBB,CCC,DDD,EEE 333,AAA,BBB,CCC,DDD,EEE