删除前导0并将Regex应用于Sed

时间:2016-10-15 09:04:08

标签: regex bash sed

我有几个文件名,为了方便我将它们放在一个文件中,如下所示:

01.action1.txt
04action2.txt
12.action6.txt
2.action3.txt
020.action9.txt
10action4.txt
15action7.txt
021action10.txt
11.action5.txt
18.action8.txt

正如您所看到的那样,格式并不一致,我试图从这些文件名中提取第一个数字1,4,12,2,20等

我有以下正则表达式

(\.)?action\d{1,}.txt

哪个成功匹配.action [number] .txt但是我还需要匹配前导0并将其应用于我的替换,并在sed中使用空白,所以我只留下前导数字。我在匹配前导0并将整个事情应用于sed时遇到了麻烦。

由于

2 个答案:

答案 0 :(得分:1)

使用GNU sed:

sed -r 's/0*([0-9]*).*/\1/' file

输出:

1
4
12
2
20
10
15
21
11
18

请参阅:The Stack Overflow Regular Expressions FAQ

答案 1 :(得分:1)

我不知道下面的awk是否有用,但它也有效:

awk '{print $1 + 0}' file
1
4
12
2
20
10
15
21
11
18