- ベストアンサー
テキストファイルの本文中に行番号を挿入するperlスクリプトを探しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
$. が「現在の行番号」を表します. で, $_ が「読み込んだ行」なので "$.: $_" で「読み込んだ行の前に行番号を追加する」ということになります. あと, 書式が必要なら指定できる printf もちゃんと用意されてます. 使える書式はだいたい C と同じです. ということで Leopard なら perl -ne 'printf "%06d: %s", $., $_' ファイル名 でいいし, Windows でも printf "%06d: $s", $., $_ while <>; というスクリプトを書いて perl スクリプト ファイル名 で OK. ただし複数のファイルを一度に処理しようとすると行番号が「前のファイルの続き」になるのは同じ.
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
1つのファイルの各行に行番号を付けるということだと: 使ってる OS によるけど Unix なら cat -n ファイル名 が最も簡単. ど~しても Perl を使いたいのなら perl -ne 'print "$.: $_"' ファイル名 でいける (出力は適宜リダイレクトする). Windows はクオートまわりが弱いのでワンライナーにならないけど print "$.: $_" while <>; とだけ書かれたスクリプトを使う (こちらも出力は適宜リダイレクト) のがきっと楽だと思う. 複数のファイルに対しそれぞれ個別に行番号を付けるなら #2 に近い方法です.
お礼
期待していた以上に(初心者にも十分に)簡単な方法を教えて いただきまして、感激です。perlに固執してはいませんので、catでも (しかも簡単に)実現できることに非常に驚きましたし、また、 為になりました。 更に欲張って、質問しますが、行番号の桁数を指定する方法は 有りますか。例えば、6桁指定の場合は、 000001 000002 000003 となるような方法です。ちなみに、自分が利用できる環境は、 Windows Vista, Mac OS X 10.5 (Leopard)です。テキストファイルを 扱える限り、手段を問いません(始めから明言しておけば良かったですね)。
- s1m00py
- ベストアンサー率0% (0/4)
こんなんでどうでしょうか。 #!/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);
お礼
勉強不足のせいか、望みを実現できませんでした。 改めて勉強し直します。 ご回答、ありがとうございました。
- mk48a
- ベストアンサー率56% (1133/2007)
ここで解説しているスクリプトでできないでしょうか? http://www.geocities.jp/m_hiroi/perl_tk/perltk07.html ダウンロードはできませんが、最後にソースがあります。
お礼
勉強不足のせいか、望みを実現できませんでした。 改めて勉強し直します。 素早いご回答、ありがとうございました。
関連するQ&A
- テキストファイルの行抽出
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 よろしくお願いします。
- ベストアンサー
- Visual Basic
- VisualC#エディタ行番号の表示方法
タイトルのとおり、VisualC#(Visual Studio 2008) のエディタの行番号を表示する方法がわかりません。 ツール→オプション→テキストエディタ とエディタに関する環境設定画面をたどることはできるのですが 行番号の設定項目が見あたらないのです。 そもそも行番号を表示させる機能がついていないのでしょうか? (これは困ります) 行番号の表示ができないため プログラムが異常終了したときにソースを追うのが一手間です。 (わざわざエディタを立ち上げてますので) 初歩的な質問ですが、 ご存じの方が見えましたらご教示願います。
- ベストアンサー
- その他(プログラミング・開発)
- テキストボックスに表示された行の番号を取得したい
VB.NETで簡単なテキストエディタを作っています。 テキストボックスをフォームに張り付けることにより、画面表示及び入力は出来るようになりました。それで、ほかのエディタ(秀丸など)のように、カーソルが、ある行にきたとき、その行番号を画面の下のほうに表示しようと考えています。そのため、まず、カーソルが位置づけられている行の行番号を取得したいのですが、その方法がわかりません。テキストボックスのプロパティ、メソッドを探したのですが、そのようなものは見あたりませんでした。どなたかご存じの方おりましたら、ご教授ください。
- ベストアンサー
- Visual Basic
- 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
- フォルダ内の複数のテキストファイルから指定行の抽出
あるフォルダ内に入っているテキストファイルの2行目を全て抽出して一つのファイルにまとめたいのですが、どのような方法があるのでしょうか? perlなどのスクリプトを教えてもらえればと思います。
- ベストアンサー
- Perl
- ワード2003 行番号の挿入 行番号が一定しない
ワード2003を使っています。35行設定のため各ページに行番号を35に設定しようとしています。 ある特定のページは35行と表示されますが、他のページでは35以下の行数が表示されます。 すべてもページを35に表示させたいのですが、対処方法が分かりません。 どなたかご存じの方がいらっしゃったらご教示下さい。
- ベストアンサー
- その他MS Office製品
お礼
望みが100%かないました。 ありがとうございました。感謝感激です。 今はコピペしているだけですが、解説文の意味を理解できるように 精進します。