• ベストアンサー

特定行までの文字列置換

先頭行から10行目までにある特定文字を変換し、11行目以降最終行まではそのまま出力したいのですが、どのようにすればよいのでしょうか。 ファイル内のレコード件数が多いので、置換対象は先頭10行までとしたいのです。

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

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.1

Perl では、特殊変数の $. (use English とすれば $INPUT_LINE_NUMBER 又は $NR を使用可能) が使えます。 while (my $line = <FH>) { if ($. <= 10) { # ここで置き換えを行う print $line; } print $line; }

joih
質問者

お礼

ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Bシェルでファイル中の文字列置換の方法について

    Bシェルで複数のファイルを読み込み、 ファイル中のデータの先頭から6バイトがある特定の文字列の場合はそのままで、特定の文字列以外は空白に置換して出力したいのですが、 どのようにすればよいのでしょうか? お手数ですが、ご教示ください。

  • テキストファイルの特定行、特定列に文字を挿入

    テキストファイルがあるとします。 ある特定の行、特定の列に文字を挿入したいです。 又は、あらかじめ、特定の文字を書いておき、 置換により文字を置き換える方法でも良いです。 これを、コマンドを使用し、batファイルで自動的に 実行したいです。 どのような方法があるでしょう?

  • 特定文字列を含まない行を削除

    以前特定文字列を含む行を削除する方法の質問をし、正規表現を置換することでできることを知りました。^.*特定の文字列.*\n 今度は特定文字列を含まない行を削除を削除したいです。 この場合どう記述すればいいでしょうか? また、特定文字列1と特定文字列2のどちらかを含まない行を削除する方法もあわせて知りたいです。

  • 文字列の置換で・・・

    Javaでの文字列の置換についてなんですが ある文字を任意の文字に置換し表示させるとともに 何個の文字を置換したかも同時に知らせたい場合は どのような処理をしたらよいでしょうか? ぜひご協力よろしくお願いします!! (例)入力した文字列に"a"が含まれる場合は"b"に置換し   その際に変換した文字数も表示してください。     basic→出力結果: "bbsic" 置換した文字数は1です。

    • ベストアンサー
    • Java
  • Wordで先頭の文字が特定の文字列の行だけフォントを変更したいのですが

    Wordで先頭の文字が特定の文字列の行だけフォントを変更したいのですが,どのようにしたらできるか教えて下さい。 具体的には,複数行(1500行くらいあります)のうち4分の1ずつ,それぞれの行頭に特定の文字列が与えられてます。特定の文字列とは次のようなものです。 \ref abcdefg \ph [abcdefg] \t abcdefg \f abcdefg 「abcdefg」はそれぞれ適当な文字です。 このような行が1500行続きます。 このうちの\phと\tの行のみ(それぞれの行全体),フォントを変更したいのですが,どのようにしたら可能でしょうか。 検索・置換の方法を調べて試してみましたがうまくできません。 ご存知の方がいらっしゃいましたら教えて下さい。よろしくお願いいたします。

  • 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
  • メモ帳の置換機能で特定の文字列は残して置換するには?

    メモ帳の置換機能を使っているのですが、置換対象文字が含まれている特定の文字や文字列を選んで置換されないようにするにはどうしたらいいいでしょうか? 例えば <aaa/>bbbbb<ccc/><ddd/>で<ccc/>を除いて「/」を「#」に置換したい場合⇒<aaa#>bbbbb<ccc/><ddd#> などです。 メモ帳に<ccc/>を除いて置換するといった機能はないですよね? 他のテキストエディタで上記の機能を持つフリーソフトがあれば教えていただけますか? よろしくおねがいします。

  • sedでの複数行にまたがる文字列置換

    スクリプト初心者ながら、少しずつ前進してきました。 特定のサブディレクトリ配下にあるファイルの文字列についてsedコマンドを使って置換しようと思っています。 条件が複数あるため、条件を外出しにして実行しているのですが、複数行またいだ場合の置換方法がわかりません。 例)  /path1/path2/itemname を  /aaa/bbb/itemname  に置換したい。 上記の場合、条件ファイルに s|/path1/path2/itemname|/aaa/bbb/itemname|g で大丈夫だと思うのですが、 /path1/path2/itemname が /path1/path2/ itemname だったり /path1/path2/ itemname だったりと、改行や空行が入って置換対象の文字列が複数行をまたいでいる場合があります。 /\/path1\/path2\//{ N s|/path1/path2/\nitemname|/aaa/bbb/itemname|g } とやってみたら /path1/path2/ itemname だけはうまくいきました。 上の内容は1ファイル中に、複数存在しています。 アドバイスをお願いいたします。

  • 複数行に渡る文字列の置換

    Perlで書かれたソースを以下のように書き換えたいと考えています。 【変換前】 my $message = Convert( From => 'Shift_JIS', To => 'utf-8', Text => "(UTF-8の文字列)", ); 【変換後】 my $message = Convert( "(UTF-8の文字列)" ); ソース・ファイルは非常にたくさんあるのでスクリプトを組んで一括で行いたいと考えています。 容易く書き換えを完了できる方法はないでしょうか? ■前提条件 - 別の場所に出力するようにする場合はディレクトリ階層も維持する。 - インデントされている場合はインデントを保持する。 perl -pi -e 's///'で置換することが最も簡単そうですが、今回は複数行に渡るため、 s///の部分が非常に複雑になりそうです。なので、s///の部分をスクリプト・ファイルかなにかに 置き換えて、下記のように実行できればと考えているのですが、(何かしらのオプション)の部分が よくわかりません。。 perl -i (何かしらのオプション) (ファイル名) (ソースファイル名)... もちろんもっと良い方法があれば、その方法が良いです。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ファイル内の文字列を置換

    掲示板利用させていただきます。 現在、ファイル内の特定の文字列を置換し、 保存する方法を探しています。 できればスクリプト言語を利用したいと考えています。 sedコマンドを使用して文字列置換を行ったのですが 置換前と置換後のファイルで 文字コードと改行コードが変わってしまうのでダメでした; 「ファイル内の特定の文字列を任意の文字列に置換し、置換前と置換後で改行コードと文字コードを変えない方法」 をご存知の方、ご教示ください。 bash,perl,javaのどれでも結構です。 よろしくおねがいします。