2009-05-28 47 views
0

我有一個包含許多行的文件。其中一個看起來像:如何在Linux上使用正則表達式在文件中查找信息

set auto_upgrade {1 2 3 4} 

該列表可以包含更多數字。

現在,在shell腳本中,我想查看此文件並找出列表中的最後一個數字。在上面的例子中,它應該找到4.我有一個正則表達式來找到這個:

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

第二組包含我所需要的。 但是,如何使用此正則表達式?我試過sed,但它會用一個替換函數返回完整的文件。我只想要第二組。

由於提前, 巴特

回答

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」與組匹配。即(忽略逃逸和報價)

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

將返回模式2的匹配部分

相關問題