コマンドラインを使用して複数のURLをドメイン名に変換する方法

コマンドラインを使用して複数のURLをドメイン名に変換する方法

複数の列と区切り文字に「、」を含む.csvファイルがあります。 URLは最初の列にあります。他の列を削除せずにすべてのURLをドメインに変換する必要があります。

私が持っているデータの例:

https://www.example.com/dog/url/path/cat.php,column2,$3,4
http://www.unix.random.com/index.html,column2,$3,4
http://example.com/dog/cat.php,column2,$3,4
www.example.com/dog/,column2,$3,4
example.com/url/path/cat/dog,column2,$3,4
https://example.com/,column2,$3,4
https://www.unix.random.com,column2,$3,4
http://www.example.com,column2,$3,4
http://example.com,column2,$3,4
www.random.com,column2,$3,4
example.com/,column2,$3,4 

「/」を含まない他の列に触れることなく、列1のすべてのURLをドメイン名に変換する必要があります。 www以外のサブドメインを維持する必要があります。

出力は次のようになります。

example.com,column2,$3,4
unix.random.com,column2,$3,4
example.com,column2,$3,4
example.com,column2,$3,4
example.com,column2,$3,4
example.com,column2,$3,4
unix.random.com,column2,$3,4
example.com,column2,$3,4
example.com,column2,$3,4
random.com,column2,$3,4
example.com,column2,$3,4 

どうすればいいですか?

ベストアンサー1

awkを使用してください。

$ awk 'BEGIN{FS=OFS=","} {sub("^([^/:]+://)?(www[.])?","",$1); sub("/.*","",$1)} 1' file
example.com,column2,$3,4
unix.random.com,column2,$3,4
example.com,column2,$3,4
example.com,column2,$3,4
example.com,column2,$3,4
example.com,column2,$3,4
unix.random.com,column2,$3,4
example.com,column2,$3,4
example.com,column2,$3,4
random.com,column2,$3,4
example.com,column2,$3,4

おすすめ記事