2009-06-01 11 views

答えて

9

私は通常、このために1つのライナーをアップコード:

perl -i -pe 's/some/thing/' log.file 

は、これは、多くの場合、ワンライナーで行われHere

+0

しかし、なぜ私はバックレファレンスを使用できないのですか? perl -pi -e "s/foo(。*)bar/bar $ 1foo /" tezt2のように動作しません。 –

+2

あなたのシェルはおそらく文字列を壊しています。 *が展開されないようにあなたの ""を置き換えてみてください。 –

+0

ありがとうございました! –

8

を参照してください:

perl -pi.bak -e "s/find/replace/g" <file> 

-i.bak部分を - 拡張子が.bakのバックアップファイルが作成されます。 (...あなたはperlのについて尋ね、私が知っている)

perl -pi -e "s/find/replace/g" <file> 
1

か、sedを使用することができます:あなたはネットなしでプレイしたい場合は、バックアップせずに既存のファイルを上書きするために、これを行うことができます

sed -i 's/find/replace/g' <file> 
+0

sedが正規表現ルールを処理する方法は、Perlのものとは異なります。 – GJTorikian

関連する問題