2012-03-23 1 views
1

パターンを検索してファイルに追加したいと思います。paternを見つけてファイルに追加して置き換えてください

正確には、私のパターンの例であり、何百というファイルがあります。

  <size>30</size> needs to be replaced with <size>30,-1</size> 

しかし、30の代わりに、数は可変である(それは0-99から任意の番号にすることができ)

私はsedのために新しいですが、私は、既知のパターンとsedのが、どのように知らない使用していましたパターンに変数があるときに変更します。

はまた、私はコードが.sedファイルに配置されたサンプルを見

 for example: sed replace.sed datafile.xyz > new.xyz 

私はそれをどのように実現するのですか?

おかげsed

答えて

2

あなたは括弧にマッチしたテキストの一部を保存し、交換でそれを含めることができます。

http://www.grymoire.com/Unix/Sed.html#uh-4

ので、例えば:

sed 's:<size>\([0-9][0-9]*\)</size>:<size>\1,-1</size>:g' ... 
+0

おかげ... uは別の一行が、代替の試合をしたい場合はどうすれば私の手作業 –

+0

の多くを保存した - しかし、perl's positive look-aheadlook-behindであなたはこのような何かを行うことができますか? – sloven

0

。 ..そしてファイルからsedコマンドを読むことについて:

s:<size>\([0-9][0-9]*\)</size>:<size>\1,-1</size>:g 

とそれを呼び出す:

sed -f commands.sed file.html 

あなたが複数のコマンドを使用している場合は、独自の行にそれぞれを置きます。

0

私はこれがperlの下にタグ付けされていないことを知っていますので、それを無視してください。

perl -pe 's/(?<=\<size\>)([0-9]{2})(?=\<\/size\>)/$1,-1/' yourfile