从perforce输出中仅提取库路径

时间:2011-06-08 02:52:04

标签: regex perforce

这里已经尝试了一些“提取到角色”的问题,但没有成功。 在grep -o

中使用它

示例输入: //blah/blah/foo.txt#7 - 由blah @ blah编辑更改12526(文本)

我想得到: //blah/blah/foo.txt

现在我正在使用正则表达式'/ [^#] * /'但是我得到了 //嗒嗒/嗒嗒/

4 个答案:

答案 0 :(得分:5)

grep不使用斜杠来分隔模式,因此字面上会匹配斜杠。

尝试:

echo '//blah/blah/foo.txt#7 - edit change 12526 (text)' | grep -o '/[^#]*'

请注意,如果“text”中包含斜杠,则该部分也将匹配,因此将由grep -o打印。所以我会选择这样的东西:

echo '//blah/blah/foo.txt#7 - edit change 12526 (text)' | sed 's/#.*//'

(当然,这两个都假设您的文件名中没有#。)

答案 1 :(得分:1)

使用cut

<whatever it takes to get your output> | cut -f1 -d"#"

因此,如果您正在浏览文件的内容或类似内容。

grep -o "whatever text" inputFile | cut -f1 -d"#"

-d"#"表示使用“#”作为分隔符,-f1表示第一个字段。

答案 2 :(得分:0)

试试这个:/^.*(?=#)/它使用(非消费)预见

答案 3 :(得分:0)

当您执行此类脚本编写时,使用“标记”模式会很有帮助,因为标记输出更易于解析和处理。请参阅http://www.perforce.com/perforce/r10.2/manuals/cmdref/o.gopts.html#1040647中的“-ztag”,并查看http://www.perforce.com/perforce/r10.2/manuals/p4script/index.html