我有一个大文件,由很多不同的行组成,这些行仅存储一个commen关键字。
PROC:storage123:0702:2108:0,1,2,3,4,5:storage:vers:storaged:storage123:Storage
123:storage123:-R /etc/orc/storage123 -e emr123@localhost -p Xxx::
PROC:storageabc:0606:2108:0,1,2,3,4,5:storage:vers:storaged:storageabc:Storage
abc:storageabc: -e emabc@localhost -R /etc/orc/storageabc -p 654::
我需要做的是grep,该路径可以在-R之后的所有存储关键字中找到。但是我只想要这条路,此后什么也没有。-R可以在不同的地方找到,因此没有模式。
我创建了一个看起来很有效的espressen,但我认为我在复杂(而不是100%确定匹配)方面做了很多工作。
[root:~/scripts/] <conf.txt grep -o 'R *[^ ]*' | grep -o '[^ ]*$' | sed 's/.*R\///'
/etc/orc/storage123
/etc/orc/storagerabc
在bash脚本中也很难实现这种压缩,因此更简单的方法就可以了。稍后,我需要在脚本中使用这些路径。
干杯
您的尝试不错,但是可以通过以下方式简化它:
$ grep -Po '(?<=-R )[^ ]*' file
/etc/orc/storage123
/etc/orc/storageabc
基本上,它会查找字符串-R
(注意空格),然后从中打印所有内容,直到一个空格为止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句