• ベストアンサー

sedコマンド置換について(マッチした数字を演算に再利用したい)

こんにちは Linuxのsedコマンドについて質問させてください。 軽く検索をかけたりUNIXのコマンド本を調べましたが、わかりませんでした。 例えば正規表現でマッチした数字を2倍して返す処理をする場合 perlではhogeという文字列に対して  hoge=~s/(\d+)/$1*2/g; このような処理で実現できると思います。 このように今マッチしたものに対して何か処理を行って置換するということは sedコマンド、もしくはそれを使ったシェルスクリプトで処理することは可能でしょうか? sedの方が処理速度が速いので、こちらを使いたいのです。

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

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

sed は文字列の処理しかできませんので、文字列を数値として扱うことは出来ません。 文字列を数値として扱うコマンドはいくつかあり、#1の方が挙げられている expr もその1つです。が、複数のコマンドを組み合わせて処理するくらいならPerlだけの方が速いと思います。

katmai013
質問者

お礼

exprというコマンドは初耳でした。 そちらを勉強してみます。 ありがとうございました。

その他の回答 (1)

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

う~ん, sed はもともとその手の演算を想定しないませんからねぇ. その気になれば sed とか expr なんかを駆使してできるとは思いますが.... こうやって質問しているということは, 既に「結果的に Perl で処理した方が速かった」ということになってるような気がします.

katmai013
質問者

お礼

もともとperlを使って正規表現を勉強した後 sedコマンドの存在を知り、その処理速度の速さに惹かれました。 (数10~数100MBのテキストを処理することを目的としているので) sedコマンドの融通の悪さが気になって、このような質問をしましたが、難しいのですね。 ありがとうございました。

関連するQ&A

専門家に質問してみよう