从 perforce 输出中仅提取仓库路径
已经在这里尝试了一些“提取字符”问题,但没有成功。 在 grep -o
示例输入中使用它: //blah/blah/foo.txt#7 - 由 blah@blah 编辑更改 12526(文本)
我想要得到: //blah/blah/foo.txt
现在我正在使用正则表达式 '/[^#]*/' 但我得到 //废话/废话/
Already tried a few of the "Extract up to a character" questions here, none work.
Using this in grep -o
example input:
//blah/blah/foo.txt#7 - edit change 12526 (text) by blah@blah
I want to get:
//blah/blah/foo.txt
Right now I am using the regex '/[^#]*/' but I get
//blah/blah/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
grep 不使用斜杠来分隔模式,因此斜杠是按字面匹配的。
尝试:
请注意,如果“文本”中包含斜杠,则该部分也将匹配,因此将由
grep -o
打印。所以我会选择这样的东西:(当然,这两个都假设你的文件名中没有#。)
grep
does not use slashes to delimit the pattern, so the slashes are being matched literally.Try:
Note that if the "text" has a slash in it, that part will also match and will therefore be printed by
grep -o
. So I would go with something like this:(Both of these assume there is no # in your file names, of course.)
使用
剪切
。<无论需要什么才能获得输出> | cut -f1 -d"#"
因此,如果您正在 grep 文件或类似内容的内容。
grep -o“任何文本”inputFile | cut -f1 -d"#"
-d"#"
表示使用“#”作为分隔符,-f1
表示第一个字段。Use
cut
.<whatever it takes to get your output> | cut -f1 -d"#"
So, if you are grepping contents of a file or something like that.
grep -o "whatever text" inputFile | cut -f1 -d"#"
The
-d"#"
means use the "#" as a delimiter,-f1
means the first field.试试这个:
/^.*(?=#)/
它使用(非消耗性)前瞻Try this:
/^.*(?=#)/
It uses a (non-consuming) look-ahead当您执行这样的脚本时,使用“标记”模式会很有帮助,因为标记的输出更容易解析和处理。请参阅 http://www 中的“-ztag” .perforce.com/perforce/r10.2/manuals/cmdref/o.gopts.html#1040647 并查看http://www.perforce.com/perforce/r10.2/manuals /p4script/index.html
It's helpful to use "tagged" mode when you are doing scripting like this, since tagged output is easier to parse and process. See "-ztag" in http://www.perforce.com/perforce/r10.2/manuals/cmdref/o.gopts.html#1040647 and also have a look at http://www.perforce.com/perforce/r10.2/manuals/p4script/index.html