如何使用PCRE在gerp中解析字符串以从中提取点

时间:2019-05-03 20:42:29

标签: grep

嗨,我正在尝试从一个较大的字符串中提取--dest字符串之后提供的path的值。它适用于大多数情况,但无法将其解析为当前目录/点(.)。有人可以请更正使用的正则表达式,以便它可以获取所有可能的路径吗?

当前我正在使用[a-zA-Z/.~0-9]

字符集

工作案例:

echo 'foo.tgz labonlu.txt --dest /foo/bar' |grep -oP -- '--dest\s+\K[a-zA-Z/~.0-9][^ ]+'
/foo/bar

echo 'foo.tgz labonlu.txt --dest /var/log' |grep -oP -- '--dest\s+\K[a-zA-Z/~.0-9][^ ]+'
/var/log

echo 'foo.tgz labonlu.txt --dest /tmp' |grep -oP -- '--dest\s+\K[a-zA-Z/~.0-9][^ ]+'
/tmp


echo 'foo.tgz labonlu.txt --dest /home/monk' |grep -oP -- '--dest\s+\K[a-zA-Z/~.0-9][^ ]+'
/home/monk


echo 'foo.tgz labonlu.txt --dest ..' |grep -oP -- '--dest\s+\K[a-zA-Z/~.0-9][^ ]+'
..

我需要修改我的正则表达式以也包括pdw。这不会打印输出

无效的情况:

echo 'foo.tgz labonlu.txt --dest .' |grep -oP -- '--dest\s+\K[a-zA-Z/~.0-9][^ ]+'

我能够像下面那样使用awk来获得结果,但是对于有效的路径语法(以[a-zA-Z/~.0-9]开头),它的矫kill过正和验证并未完成。

awk '{for(i=1;i<=NF;i++) if($i == "--dest") print $(i+1)}'

0 个答案:

没有答案