dポイントプレゼントキャンペーン実施中!

こんにちは
Linuxのsedコマンドについて質問させてください。
軽く検索をかけたりUNIXのコマンド本を調べましたが、わかりませんでした。

例えば正規表現でマッチした数字を2倍して返す処理をする場合
perlではhogeという文字列に対して
 hoge=~s/(\d+)/$1*2/g;
このような処理で実現できると思います。

このように今マッチしたものに対して何か処理を行って置換するということは
sedコマンド、もしくはそれを使ったシェルスクリプトで処理することは可能でしょうか?

sedの方が処理速度が速いので、こちらを使いたいのです。

A 回答 (2件)

sed は文字列の処理しかできませんので、文字列を数値として扱うことは出来ません。


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

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

お礼日時:2008/08/07 01:34

う~ん, sed はもともとその手の演算を想定しないませんからねぇ. その気になれば sed とか expr なんかを駆使してできるとは思いますが....


こうやって質問しているということは, 既に「結果的に Perl で処理した方が速かった」ということになってるような気がします.
    • good
    • 0
この回答へのお礼

もともとperlを使って正規表現を勉強した後
sedコマンドの存在を知り、その処理速度の速さに惹かれました。
(数10~数100MBのテキストを処理することを目的としているので)

sedコマンドの融通の悪さが気になって、このような質問をしましたが、難しいのですね。
ありがとうございました。

お礼日時:2008/08/07 01:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!