このコマンドが機能しない理由を理解しようとしています。
sed -n -e '/<a href=\(.*\)>/,/<\/a>/p' text.html
Text.htmlには、次のようなものがあります...
<somestupidstuff> <a href='teste'> teste </a> </somestupidstuff>
必要な出力は次のとおりです。
<a href='teste'> teste </a>
しかし、私が得るものは:
<somestupidstuff> <a href='teste'> teste </a> </somestupidstuff>
多分私は正規表現を完全に理解していません。
ケースにgrep
を使用する方がはるかに簡単です。例えば。こちらです:
grep -o '<a href=[^<]*<\/a>'
<
の間に<a href>..</a>
がある場合は、代わりにこれを試してみてください。
grep -o '<a href=.*<\/a>'
ただし、同じ文字列に複数の<a href=...</a>
オカレンスがある文字列では、予期しないデータが返される可能性があることに注意してください。
/pattern1/,/pattern2/p
はpattern1
の行からpattern2
の行までのすべての行を印刷するようにsed
に指示するため、sed
は機能しません(パターンのある行を含む)。
この問題はsed
でも解決できる可能性がありますが、それはsomestupidstuff
の内容によって異なります(たとえば、すべての場合で同じかどうかなど)。