2010-12-05 13 views
7

ファイル内で、xyz.txtと言っています。任意の数字のパターンとそれに続くドットの例を置き換えたい:1.、2.、10.、11。空白で。 上記を行うためにファイルに作用するコマンドラインでperlコマンドを作成するには、どのような正規表現を使用する必要がありますか?コマンドラインからファイルを操作するPerlの正規表現

お願いします ありがとうございます。

答えて

4

回答(テストしていません):

perl -ipe "s/\d+\./ /g" xyz.txt 
+10

私は、次の順序を使用します。 –

19

これは、Perl onelinerする必要がありますか?

perl -i -pe 's/\d+\./ /g' <fileName> 

のPerlコマンドラインオプション:-iは、入力ファイルに何が起こるかを指定するために使用されます。ファイル拡張子を指定しないと、元のファイルは失われ、Perlのmunged出力に置き換えられます。

perl -i.bak -pe 's/\d+\./ /g' <fileName> 

元のファイル自体があなたの出力が含まれます>.bakサフィックスと<ファイル名で保存されます:たとえば、場合、私はこれを持っていました。

-pはややこのようなに見えるprintループであなたのPerlプログラムを囲むことを意味します

while ($_ = <>) { 
    <Your Perl one liner> 
    print "$_"; 
} 

これは何が起こっているのか、やや単純化した説明です。コマンドラインからperldoc perlrunを実行すると、実際のperlループを見ることができます。主な考え方は、あなたがsedまたはawkのようなファイルの各行で行動することができるということです。

-eには、単にPerlコマンドが含まれています。

あなたは、あまりにもファイルのリダイレクトを行うことができます

perl -pe 's/\d+\./ /g' <xyz.txt> xyz.txt.out 
+0

+1は、-iの非常に便利な使い方を指摘し、-pの背後にある仕組みを説明し、リダイレクションの代替案を表示するためのものです。 – Olfan

+0

Windows CMDでActive Perlを使用している場合は、正規表現文字列を囲むために二重引用符 ""を使用してください。そうしないと正しく動作しません。ちょうど私のウィンドウ10のコマンドラインでテストされます。 –

2

両方

perl -ipe "s/\d+\./ /g" xyz.txt 

perl -pie 

は私のシステム上で実行することはできません。それは言葉を綴るが、それは問題ではありませんので、私は個人的にperlの-pie` `入力したい

perl -i -pe