Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 删除前导0并将正则表达式应用于Sed_Regex_Bash_Sed - Fatal编程技术网

Regex 删除前导0并将正则表达式应用于Sed

Regex 删除前导0并将正则表达式应用于Sed,regex,bash,sed,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\

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

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

感谢使用GNU:

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

1 4 12 2 20 10 15 21 11 18 1. 4. 12 2. 20 10 15 21 11 18
请参阅:

使用GNU时:

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

1 4 12 2 20 10 15 21 11 18 1. 4. 12 2. 20 10 15 21 11 18

请参阅:

我不知道下面的
awk
是否有用,但它也可以工作:

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

我不知道下面的
awk
是否有用,但它也可以工作:

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