- ベストアンサー
sedコマンド置換について(マッチした数字を演算に再利用したい)
こんにちは Linuxのsedコマンドについて質問させてください。 軽く検索をかけたりUNIXのコマンド本を調べましたが、わかりませんでした。 例えば正規表現でマッチした数字を2倍して返す処理をする場合 perlではhogeという文字列に対して hoge=~s/(\d+)/$1*2/g; このような処理で実現できると思います。 このように今マッチしたものに対して何か処理を行って置換するということは sedコマンド、もしくはそれを使ったシェルスクリプトで処理することは可能でしょうか? sedの方が処理速度が速いので、こちらを使いたいのです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
sed は文字列の処理しかできませんので、文字列を数値として扱うことは出来ません。 文字列を数値として扱うコマンドはいくつかあり、#1の方が挙げられている expr もその1つです。が、複数のコマンドを組み合わせて処理するくらいならPerlだけの方が速いと思います。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
う~ん, sed はもともとその手の演算を想定しないませんからねぇ. その気になれば sed とか expr なんかを駆使してできるとは思いますが.... こうやって質問しているということは, 既に「結果的に Perl で処理した方が速かった」ということになってるような気がします.
質問者
お礼
もともとperlを使って正規表現を勉強した後 sedコマンドの存在を知り、その処理速度の速さに惹かれました。 (数10~数100MBのテキストを処理することを目的としているので) sedコマンドの融通の悪さが気になって、このような質問をしましたが、難しいのですね。 ありがとうございました。
お礼
exprというコマンドは初耳でした。 そちらを勉強してみます。 ありがとうございました。