命令行中 awk 的正则表达式匹配

命令行中 awk 的正则表达式匹配

我试图从 unrar 命令详细获取文件名,并通过命令行删除它们。

unrar 命令输出类似于:

Extracting  BucketSort.cpp                                            OK 
Extracting  BucketSort.vcxproj                                        OK 
Extracting  BucketSort.vcxproj.filters                                OK 
Extracting  BucketSort.lastbuildstate                                 OK 
Extracting  BucketSort.log                                            OK 
Extracting  BucketSort.obj                                            OK 
Extracting  BucketSort.pch                                            OK 

所以到目前为止我想出了这个 awk 命令:

unrar e BucketSort.rar | awk '{if (match($0,/Extracting\s*([\w|.]+)\s*OK/,m)) print m[0]}'

但没有打印任何内容。当我只留下“正在提取”一词来匹配时,我可以看到所有提取文件的“正在提取”。所以它不能识别用正则表达式编写的内容,但我不知道它是什么。你知道这个表达有什么问题吗?

PS:你可以检查正则表达式这里

答案1

这应该可以解决问题:

unrar e BucketSort.rar | awk '/^Extracting/ {print $2}'

相关内容