regex - sed 查找与另一个模式一致的模式

标签 regex bash sed

我正在尝试从 < 之间的文件中提取文本和一个 > , 但仅在以另一个特定模式开头的行上。

所以在一个看起来像这样的文件中:

XXX Something here  
XXX Something more here  
XXX <\Lines like this are a problem> 
ZZZ something <\This is the text I need> 
XXX Don't need any of this

我只想打印 <\This is the text I need> .

如果我这样做

sed -n '/^ZZZ/p' FILENAME

它拉出我需要查看的正确行,但显然打印了整行。

sed -n '/<\/,/>/p' FILENAME prints way too much. 

我研究过分组并尝试过

sed -n '/^ZZZ/{/<\/,/>/} FILENAME

但这似乎根本不起作用。

有什么建议吗?他们将不胜感激。

(抱歉格式化,以前从未在这里发布过)

最佳答案

sed -n '/^ZZZ/ { s/^.*\(<.*>\).*$/\1/p }'

关于regex - sed 查找与另一个模式一致的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823529/

相关文章:

linux - 归档旧目录并删除它们

awk - 如果一个字符串与特定文件中最后一行的开头匹配,则替换同一行中的另一个字符串。使用正则表达式组吗?

linux - 如何在多行 linux 上进行精确匹配

regex - 如何在 sed Replace 命令中传递可变行号

Javascript 匹配和 RegExp 问题——奇怪的行为

linux - 重定向bas​​h for循环的输出

php - 从病毒中清除 php 文件

c# - 正则表达式条件值

regex - Sed 和 Awk 转义 & 符号

linux - 如何对行进行多次排序?