如何从大量代码中提取文件名

时间:2018-11-23 05:32:40

标签: regex linux bash

我想提取一段代码中出现的所有文件名

a=`cut -d: -f 3 /etc/passwd | sort | uniq` | awk `{print $2}`
"if [ -n "$a" ];",
"then for i in `echo "$a"`; do awk -F:
...
;done; else echo "error";fi" cat /etc/issue ... 
/etc/pam.d/system-auth
(/deny=/)

就像这段代码一样,我想获取这些文件- / etc / passwd,/ etc / issue和/etc/pam.d/system-auth

1 个答案:

答案 0 :(得分:0)

假设您对以斜杠开头的绝对路径感兴趣,则可以使用以下正则表达式进行捕获,

\/[\w+.\/-]+(?= |$)

Demo

您可以将文本放在名为myfile的文件中,然后运行此命令,

cat myfile|grep -oP '\/[\w+.\/-]+(?= |$)'

OR

grep -oP '\/[\w+.\/-]+(?= |$)' myfile

这会按照您希望的方式打印以下输出

/etc/passwd
/etc/issue
/etc/pam.d/system-auth