这里已经尝试了几个“提取到一个字符”的问题,都不起作用。在grep -o中使用它
示例输入: //blah/blah/foo.txt#7 -由blah@blah编辑更改12526 (文本)
我想获取: //blah/blah/foo.txt
现在我正在使用正则表达式'/^#*/‘,但是我得到//blah/blah/
发布于 2011-06-08 11:15:29
grep不使用斜杠来分隔模式,因此斜杠是逐字匹配的。
尝试:
echo '//blah/blah/foo.txt#7 - edit change 12526 (text)' | grep -o '/[^#]*'请注意,如果“文本”中有一个斜杠,该部分也将匹配,因此将由grep -o打印。所以我会用这样的东西:
echo '//blah/blah/foo.txt#7 - edit change 12526 (text)' | sed 's/#.*//'(当然,这两种方法都假定文件名中没有#。)
发布于 2011-06-10 06:37:20
使用cut。
<whatever it takes to get your output> | cut -f1 -d"#"
所以,如果你正在抓取一个文件的内容或者类似的东西。
grep -o "whatever text" inputFile | cut -f1 -d"#"
-d"#"表示使用"#“作为分隔符,-f1表示第一个字段。
发布于 2011-06-08 11:07:37
试试这个:/^.*(?=#)/它使用了一个(非消耗的)前瞻
https://stackoverflow.com/questions/6273706
复制相似问题