パス名またはスラッシュを含む他のパターンを照合するために使用sed
している場合は、スラッシュ以外の文字を使用して正規表現を区切ります。それは人生をずっと楽にしてくれます。
.*
パターンは貪欲です。可能な限り長い文字列と一致します。より制約された式が必要です。
印刷するhttp://site.com
には、次を使用します。
sed -n 's%.*\(https\{0,1\}://[^/]*\).*%\1%p'
印刷するsite.com
には、次を使用します。
sed -n 's%.*https\{0,1\}://\([^/]*\)/.*%\1%p'
ホスト名の後にスラッシュがないサイトがあると思われる場合(つまり、入力にのみが含まれているhttp://site.com
場合)、次を使用できます。
sed -n -e 's%.*https\{0,1\}://\([^/]*\)/.*%\1%p' \
-e 's%.*https\{0,1\}://\([^/]*\)$%\1%p'
これらは、あらゆる種類の句読文字を「有効」として受け入れることに注意してください。[-a-zA-Z0-9_.]*
おそらく、代わりに使用したい場合は、より区別することができますが、[^/]*
国際化ドメイン名には注意してください。2つのパターンのバージョンは、URLの後の空白で停止しません。の閉じ括弧が含まれます(http://example.com)
。これは、文字が有効であるという点の当然の結果です。