这里已经尝试了一些“提取到角色”的问题,但没有成功。 在grep -o
中使用它示例输入: //blah/blah/foo.txt#7 - 由blah @ blah编辑更改12526(文本)
我想得到: //blah/blah/foo.txt
现在我正在使用正则表达式'/ [^#] * /'但是我得到了 //嗒嗒/嗒嗒/
答案 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