• ベストアンサー

テキストファイルの本文中に行番号を挿入するperlスクリプトを探しています。

テキストファイルの本文中に行番号を挿入するperlスクリプトが有る、と聞いて探しているのですが、見付かりません。何か手掛かりをご存知の方がいらっしゃいましたら、ご教示をお願いいたします。 ※「本文中に行番号を挿入する」とは、(テキストエディタやOSなどの)環境・設定が異なる人同士で情報交換する際でも、同じ行番号で同じ行を特定できるようにすることを意図しています。

  • Perl
  • 回答数4
  • ありがとう数83

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

$. が「現在の行番号」を表します. で, $_ が「読み込んだ行」なので "$.: $_" で「読み込んだ行の前に行番号を追加する」ということになります. あと, 書式が必要なら指定できる printf もちゃんと用意されてます. 使える書式はだいたい C と同じです. ということで Leopard なら perl -ne 'printf "%06d: %s", $., $_' ファイル名 でいいし, Windows でも printf "%06d: $s", $., $_ while <>; というスクリプトを書いて perl スクリプト ファイル名 で OK. ただし複数のファイルを一度に処理しようとすると行番号が「前のファイルの続き」になるのは同じ.

libertin
質問者

お礼

望みが100%かないました。 ありがとうございました。感謝感激です。 今はコピペしているだけですが、解説文の意味を理解できるように 精進します。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

1つのファイルの各行に行番号を付けるということだと: 使ってる OS によるけど Unix なら cat -n ファイル名 が最も簡単. ど~しても Perl を使いたいのなら perl -ne 'print "$.: $_"' ファイル名 でいける (出力は適宜リダイレクトする). Windows はクオートまわりが弱いのでワンライナーにならないけど print "$.: $_" while <>; とだけ書かれたスクリプトを使う (こちらも出力は適宜リダイレクト) のがきっと楽だと思う. 複数のファイルに対しそれぞれ個別に行番号を付けるなら #2 に近い方法です.

libertin
質問者

お礼

期待していた以上に(初心者にも十分に)簡単な方法を教えて いただきまして、感激です。perlに固執してはいませんので、catでも (しかも簡単に)実現できることに非常に驚きましたし、また、 為になりました。 更に欲張って、質問しますが、行番号の桁数を指定する方法は 有りますか。例えば、6桁指定の場合は、 000001 000002 000003 となるような方法です。ちなみに、自分が利用できる環境は、 Windows Vista, Mac OS X 10.5 (Leopard)です。テキストファイルを 扱える限り、手段を問いません(始めから明言しておけば良かったですね)。

  • s1m00py
  • ベストアンサー率0% (0/4)
回答No.2

こんなんでどうでしょうか。 #!/usr/bin/perl use strict; use warnings; my $filename = 'text.txt'; #行番号を挿入したいファイル my $tmpfile = 'text.tmp'; my $count = 1; open my $fh, '<', $filename or die "can`t open $filename : $!\n"; open my $tmp, '>', $tmpfile or die "can`t write $tmpfile : $!\n"; while(<$fh>){ print $tmp "$count : $_"; $count++; } close $fh; close $tmp; unlink($filename) or die "can`t delete $filename : $!\n"; rename($tmpfile, $filename);

libertin
質問者

お礼

勉強不足のせいか、望みを実現できませんでした。 改めて勉強し直します。 ご回答、ありがとうございました。

  • mk48a
  • ベストアンサー率56% (1133/2007)
回答No.1

ここで解説しているスクリプトでできないでしょうか? http://www.geocities.jp/m_hiroi/perl_tk/perltk07.html ダウンロードはできませんが、最後にソースがあります。

libertin
質問者

お礼

勉強不足のせいか、望みを実現できませんでした。 改めて勉強し直します。 素早いご回答、ありがとうございました。

関連するQ&A

  • wordで行番号を本文に挿入したい

     word2007で行番号を挿入したいのですが、余白内に表示されてしまいます。 余白外(本文)に挿入する方法はないのでしょうか?

  • テキストファイルの行抽出

    linux環境のプログラムについて質問です。 ある特定のファイル(テキストファイル)内のデータで 指定の行を抽出する方法を教えていただきたいと思います。 現在はawkを使用してbashスクリプト内で下記のように head, tailを使用していますが、処理が重いように 感じます。perlまたはawkなどで行抽出の軽い処理は できないでしょうか? (他のunixコマンドでも結構です。) ---------------------------------------- RNUM=`awk 'END{print NR}' $1` #行番号取得 for iwl in `seq 1 $RNUM`;do BASE=`head -n $iwl $1 | tail -n 1` done #iwl ---------------------------------------- Fortran, Cなども使えますが、色々組み合わせて使う上で bash内のスクリプトで行ないたいと思います。

  • textファイル名を取得して先頭行の挿入スクリプト

    大量のtxtファイルのファイル名をテキストの先頭行に挿入するスクリプトを見つけて実行したのですが、17行の引数エラーとなってしまいました。 古いスクリプト(2007年)で作者に繋がるかわからないので、どなたかvbsに詳しい方に教えていただければ幸いです。 http://beauty.geocities.jp/chirinuruwowahe/TxtTxtAddName.zip よろしくお願いします。

  • VisualC#エディタ行番号の表示方法

    タイトルのとおり、VisualC#(Visual Studio 2008) のエディタの行番号を表示する方法がわかりません。 ツール→オプション→テキストエディタ とエディタに関する環境設定画面をたどることはできるのですが 行番号の設定項目が見あたらないのです。 そもそも行番号を表示させる機能がついていないのでしょうか? (これは困ります) 行番号の表示ができないため プログラムが異常終了したときにソースを追うのが一手間です。 (わざわざエディタを立ち上げてますので) 初歩的な質問ですが、 ご存じの方が見えましたらご教示願います。

  • テキストボックスに表示された行の番号を取得したい

    VB.NETで簡単なテキストエディタを作っています。 テキストボックスをフォームに張り付けることにより、画面表示及び入力は出来るようになりました。それで、ほかのエディタ(秀丸など)のように、カーソルが、ある行にきたとき、その行番号を画面の下のほうに表示しようと考えています。そのため、まず、カーソルが位置づけられている行の行番号を取得したいのですが、その方法がわかりません。テキストボックスのプロパティ、メソッドを探したのですが、そのようなものは見あたりませんでした。どなたかご存じの方おりましたら、ご教授ください。

  • perlで特定行から特定行までを抜き出しor置換

    perlで以下のようなことをしたいと考えています。 以下のことを、コマンドラインから「perl ~」という形で 実行したいのですが、どのよにすればよいでしょうか。 1.特定行から特定行までを抜き出し 2.特定行から特定行の範囲で文字列置換 例えば、次のようなテキストファイルがあったとします。 example.txt ================================== #START aaaa hogehoge test okok perl script #END ================================== 上記ファイルを読み込んで、 1.「#START」から「#END」の間に挟まれた行だけ抜き出し 2.「#START」から「#END」の間で、「test」を置換 のです。 sedで言うところの sed -e '/#START/,/#END/ s/YYYYMM/201603/g' test.txt をやりたいのです。

    • ベストアンサー
    • Perl
  • 図表番号の挿入

    ワード2003を使用しています. 図表番号を挿入すると本文中に挿入されてしまうのですが, これをテキストボックス中に挿入させるにはどうすればよいのでしょうか?? よろしくお願いいたします.

  • フォルダ内の複数のテキストファイルから指定行の抽出

    あるフォルダ内に入っているテキストファイルの2行目を全て抽出して一つのファイルにまとめたいのですが、どのような方法があるのでしょうか? perlなどのスクリプトを教えてもらえればと思います。

    • ベストアンサー
    • Perl
  • ワード2003 行番号の挿入 行番号が一定しない

    ワード2003を使っています。35行設定のため各ページに行番号を35に設定しようとしています。 ある特定のページは35行と表示されますが、他のページでは35以下の行数が表示されます。 すべてもページを35に表示させたいのですが、対処方法が分かりません。 どなたかご存じの方がいらっしゃったらご教示下さい。

  • Wordの行番号

    困っています。助けてください。 ぼくは英語の教師をやっているのですが、ページ内の特定の行に行番号を追加すると、勝手に改ページされて、次のページに飛んでしまいます。改ページを挿入せずに1ページ内の特定の行に行番号を追加する方法を教えてください。 すいません、よろしくおねがいします。