2017-06-22 8 views
-1

perlの1つのライナーで数字に1000を追加しようとしています。ここに私が試したものです:perl one-linerでの追加

perl -pi -e "s/ZZZ(\d+)ZZZ/ZZZ\1+1000ZZZ/e" file.txt 

私はZZZ間の数字に1000を追加することを望んでいました。しかし、エラーメッセージが表示されます。

Backslash found where operator expected at -e line 1, near "ZZZ\" 
Bareword found where operator expected at -e line 1, near "1000ZZZ" 
    (Missing operator before ZZZ?) 
syntax error at -e line 1, near "ZZZ\" 
Execution of -e aborted due to compilation errors. 

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

+0

では動作しませんがqw' 'でコードを明確にしてください。例えば。 's/qw()/ qw()/' –

+0

次に、 ''バックアップなしでインプレース編集できません。しかしそれは別の問題です。 –

答えて

6

使用$1と連結を使ってRHSに新しい文字列を構築する:

perl -pi -e 's/ZZZ(\d+)ZZZ/ZZZ . ($1 + 1000) . ZZZ/e' file.txt 

注:これは、perl -Mstrict

+1

ありがとう!あなたの私のヒーロー! –

+1

@A.Fournierあなたは –

+2

だから、それを*厳密に扱うように書くのはいかがですか? – Borodin

関連する問題