我正在尝试从<
和>
之间的文件中提取文本,但只能在以其他特定模式开头的行中提取。
所以在一个看起来像这样的文件中:
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
但这似乎根本不起作用。
有什么建议吗?他们将非常感激。
(格式化道歉,以前从未发布过)
答案 0 :(得分:6)
sed -n '/^ZZZ/ { s/^.*\(<.*>\).*$/\1/p }'
答案 1 :(得分:1)
如果它不必是sed且你有一个相当新的grep,你可以使用grep的选项-o,如
grep '^ZZZ' | grep -o '<[^>]*>'
答案 2 :(得分:0)
awk
版本
awk -F"<|>" '/^ZZZ/ {print "<"$2">"}' file
<\This is the text I need>