仅在sed </end> </start>中的<start>和<end>之间打印匹配的模式

时间:2012-11-01 23:42:32

标签: bash shell sed

输入 -

ajflkajlkaj
ddddddddddd/need/to/print/thiskkkkkkkkkkkk
ahfkjahkfja

需要输出

/need/to/print/this

谷歌搜索和调整我能够通过这样做提取“这个” -

sed -n 's/^.*\(this\).*$/\1/p' myfile

但似乎无法从“/ need”开始获取其余模式的语法。

我很感激任何指示/建议。

提前致谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

sed -n 's![^/]\+\(.*/this\).*!\1!p'  filename.txt

注意

sed分隔符可以是您想要的,而不是默认的/。我在这里使用!

如果您愿意,也可以使用简单的grep命令:

grep --binary-files=text -o '/.*/this' filename.txt

答案 1 :(得分:1)

您需要告诉我们ddd和kkk的真正含义。假设“this”后面有一些空格,您可以匹配此模式:

sed -n 's/^[^\/]*\(.*\)\s.*$/\1/p' myfile

[^\/]*表示首先匹配尽可能多的非/字符。