2014-12-02 66 views
-1

我试图使用unix sed命令查找与特定正则表达式匹配的行号。我的文件的模式如下使用'sed'找到一行

Murali : 20 # 
Krishna: 21 $ 
Hari: 22 @ 
Murali : 23 # 

我需要只输出数字像下面使用SED命令

20 
21 
22 
23 

你能帮帮我与SED正则表达式。

+3

为什么不使用cut? like'cut -d''-f2' – jmunsch 2014-12-02 03:51:52

回答

0

如何

$ cat input 
Murali : 20 # 
Krishna: 21 $ 
Hari: 22 @ 
Murali : 23 # 

$ sed -r 's/^[^0-9]+([0-9]+).*/\1/g' input 
20 
21 
22 
23 
  • [^0-9]+匹配以外的任何其他数字

  • ([0-9]+)匹配的数字,在组捕获1

  • .*匹配其余

0

您也可以参考awk版本

awk -F":" '{print $2--}' 

输出:

20 
21 
22 
23 
+0

即使是一些较短的'awk -F:'{$ 0 = + $ 2} 1''或'awk -F:'{print + $ 2}'' – Jotne 2014-12-02 07:28:45

0

这里是一个awk。这可能是简单的比一个正则表达式sed解决明白,

awk '{print $(NF-1)}' file 
20 
21 
22 
23 

打印倒数第二场。