2009-05-28 7 views
0

私はそこに多くの行を含むファイルを持っています。そのうちの1つは次のようになります。Linuxの正規表現を使用してファイル内の情報を見つける方法

set auto_upgrade {1 2 3 4} 

リストにはさらに数字が含まれています。

シェルスクリプトで、このファイルを調べて、リストの最後の数字が何であるかを調べたいと思います。上記の例では、4を見つける必要があります。私はこれを見つけるために正規表現を持っています:

set auto_upgrade {\([0-9] \)*\([0-9]\{1,\}\)} 

2番目のグループには必要なものが含まれています。 しかし、この正規表現はどのように使用しますか?私はsedを試しましたが、サブファイルを含む完全なファイルを返します。私はちょうど2番目のグループが欲しい。事前に

おかげで、 バース

答えて

3

まず、静かなモードでsedを起動します。そうするように言われない限り、それが何を印刷してはならない(つまり、フラグ-nです) 。置換が行われた場合にのみ印刷する(パターン修飾子はp

sed -n 's/set auto_upgrade {\([0-9] \)*\([0-9]\{1,\}\)}/\2/p' 
0

何か

のような猫のファイル名| perl -pe 's /^.*(\ d +)\}/$ 1 /'

は動作します。

0
sed 's/.*\([0-9]\+\)}/\1/g' 

置換セクションの「\ 1」はグループに一致します。つまりは、パターン2のマッチした部分を返します

sed s/pattern1(pattern2)/\1/g 

(エスケープと引用符を無視して)

関連する問題