Regex 使用';sed';在一行中找到一个数字
我试图使用unixsed命令查找与特定正则表达式匹配的行号。我的文件模式如下Regex 使用';sed';在一行中找到一个数字,regex,shell,sed,Regex,Shell,Sed,我试图使用unixsed命令查找与特定正则表达式匹配的行号。我的文件模式如下 Murali : 20 # Krishna: 21 $ Hari: 22 @ Murali : 23 # 我只需要使用SED命令输出下面这样的数字 20 21 22 23 你能帮我学习一下SED的正则表达式吗 $ cat input Murali : 20 # Krishna: 21 $ Hari: 22 @ Murali : 23 # $ sed -r 's/^[^0-9]+([0-9]+).*/\1/g' i
Murali : 20 #
Krishna: 21 $
Hari: 22 @
Murali : 23 #
我只需要使用SED
命令输出下面这样的数字
20
21
22
23
你能帮我学习一下SED的正则表达式吗
$ 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]+
匹配组1中捕获的数字([0-9]+)
与其余部分匹配*
- 您也可以参考
awk
版本
awk -F":" '{print $2--}'
输出:
20
21
22
23
这是一个
awk
。它可能比正则表达式sed
解决方案更容易理解
awk '{print $(NF-1)}' file
20
21
22
23
打印倒数第二个字段。为什么不使用剪切?像
cut-d'-f2
甚至一些更短的awk-F:'{$0=+$2}1'
或awk-F:'{print+$2}'