
このコマンドが私にうまくいかない理由を見つけようとしています。
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>
おそらく正規表現を完全に理解できないかもしれません。
答え1
grep
あなたの場合には使いやすくなります。たとえば、
grep -o '<a href=[^<]*<\/a>'
以下を試してください<
。<a href>..</a>
grep -o '<a href=.*<\/a>'
<a href=...</a>
ただし、同じ文字列が複数回表示されると、予期しないデータが返される可能性があることに注意してください。
sed
パターンがある行を含む行と行の間のすべての行を印刷するように指示する/pattern1/,/pattern2/p
ため、機能しません。sed
pattern1
pattern2
問題はsed
解決する可能性がありますが、内容によって異なりますsomestupidstuff
(たとえば、すべての場合で同じですか)。