awkまたはsedを使用してhttp://example.com以降のすべてのアイテムを削除する方法

awkまたはsedを使用してhttp://example.com以降のすべてのアイテムを削除する方法

多数のURLを含む出力ファイルがあるとします。 awkまたはsedを使用してURLの一部を削除して最終結果をhttp://example.com取得http://example.com/folder/file.html

ベストアンサー1

最初のシングル(ダブルではない)以降のすべてのアイテムを削除するには、次の手順を実行します/

sed -r 's#([^/])/[^/].*#\1#'

この式はs#([^/])/[^/].*#\1#正規表現を使用して置換を実行します([^/])/[^/].*。これは/、単一文字/(および入力行の末尾にある他の文字)が後に来ないすべての文字と一致します。

置換は、一致する項目を単一文字の前の文字/(それ以外の場合は置換)に置き換えます。

ファイルでテストしてみてください

http://example.com/folder/file.html
http://example.bar.com/folder/file.html
http://example.com:8080/folder/file.html
$ sed -r 's#([^/])/[^/].*#\1#' file
http://example.com
http://example.bar.com
http://example.com:8080

使用awk:

$ awk -F'/' '{ print $1 "//" $3 }' file
http://example.com
http://example.bar.com
http://example.com:8080

ここでは、フィールド区切り文字として使用/し、最初と3番目のフィールドを選択し、//それらの間の文字列を使用して出力します。

おすすめ記事