Awk 仅使用命令行解析url

Awk 仅使用命令行解析url,awk,sed,Awk,Sed,我有一个如下所示的csv文件: id,author,url 1,bob,http://mywebsite.com/path/to/content 2,john,https://anotherwebsite.com/path/to/some/other/content 3,alice,http://www.somewebsite.com/path/to/content 我想把它变成: id,author,url 1,bob,mywebsite.com 2,john,anotherwebsite.

我有一个如下所示的csv文件:

id,author,url
1,bob,http://mywebsite.com/path/to/content
2,john,https://anotherwebsite.com/path/to/some/other/content
3,alice,http://www.somewebsite.com/path/to/content
我想把它变成:

id,author,url
1,bob,mywebsite.com
2,john,anotherwebsite.com
3,alice,somewebsite.com
我知道用javascript或python可以很容易地做到这一点,但我正在试图理解
awk
sed
是如何工作的。是否有一种方法可以仅使用命令行工具轻松完成此操作

非常感谢

这应该可以:

awk -F, 'NR>1{split($3,a,"/");$0=$1","$2","a[3]}1' file
id,author,url
1,bob,mywebsite.com
2,john,anotherwebsite.com
3,alice,www.somewebsite.com
使用

然后,对于除第一行
NR>1
、拆分字段
$3
之外的所有行,重新创建该行。
1
全部打印


同时删除
www.

awk -F, 'NR>1{split($3,a,"/");sub(/^www./,"",a[3]);$0=$1","$2","a[3]}1'
id,author,url
1,bob,mywebsite.com
2,john,anotherwebsite.com
3,alice,somewebsite.com

在SO中有很多类似的问题,它们要求使用re解析url。真诚的回答是,请不要。如果你想学习这两种工具,你需要找到更合适的。url不适合re。您希望
www.somewebsite.com
转换为
somewebsite.com
www
是您想要去除的唯一前缀吗?关于
foo.somewebsite.com
的一般情况,例如
www.google.com
vs
drive.google.com
vs
calendar.google.com
?这个
子(/^www./,”,a[3])
从URL中删除
www.
,如果它在开始的话。请看我更新的帖子。如果你想去掉所有后缀,而不仅仅是
www.
,你可能需要:
awk-F'[,/]+''NR>1{match($4,/[^.]+\..[^.]+$/);$0=$1“,“$2”,“substr($4,RSTART,RLENGTH)}1”文件
@EdMorton不是一个好的解决方案。这将把
site.com.br
更改为
com.br
,这就是目的,例如,
drive.google.com
将减少为
google.com
,就像
www.google.com
一样。为什么这不是一个好的解决方案?我认为这是可取的…@EdMorton,正如我所写的,有许多网站使用双国家扩展,这将受到影响。看看这两个:
www.time.co.uk
time.co.uk
。我的解决方案会给出
time.co.uk
time.co.uk
,你的解决方案会给出
time.co.uk
co.uk
。最后一个将不会给出有用的域名。