sed を使用して URL の行をクリーンアップし、ドメインだけを抽出しようとしています。
つまり:
http://www.suepearson.co.uk/product/174/71/3816/
欲しい:
http://www.suepearson.co.uk/
(末尾のスラッシュの有無は関係ありません)
私が試してみました:
sed 's|\(http:\/\/.*?\/\).*|\1|'
そして(非貪欲な量指定子を回避)
sed 's|\(http:\/\/.*\?\/\).*|\1|'
しかし、非貪欲な量指定子 ( ?
) が機能しないようで、常に文字列全体が一致してしまいます。
ベストアンサー1
基本的な Posix/GNU 正規表現も拡張された Posix/GNU 正規表現も非貪欲な量指定子を認識しないので、後続の正規表現が必要になります。幸いなことに、このコンテキストの Perl 正規表現は非常に簡単に入手できます。
perl -pe 's|(http://.*?/).*|\1|'