我有以下awk命令,该命令从选项卡分隔的文件中获取信息。
awk -F'\t' '{ print $2 $4 }' data.log >> data.json
$ 4中包含的数据是一个完整的URL,我只想要域名,并且可以使用以下示例检索
echo 'http://www.example.com/page?param=stuff' | awk -F/ '{print $3}'
哪个会返回www.example.com,但我只想要example.com
我正在寻找一种方法来结合这两个语句(如果可能)以及删除example.com之前的任何内容的最佳解决方案(有些URls会有www,有些会有其他文本,有些会有没有)
感谢您抽出宝贵时间来查看我的问题!
答案 0 :(得分:1)
您可以在split
中使用awk
功能:
awk -F'\t' '{ split($4, a, "/"); sub(/^www\./, "", a[3]);
print $2 a[3] }' data.log >> data.json
答案 1 :(得分:0)
这看起来有点混乱,但会在www之间提取所有内容。和.com的结尾无论是否使用/
或任何其他字符。
希望有所帮助:)
awk '{print substr($4,index($4,"www")+4,index($4,".com")-index($4,"www"))} 'data.log >> data.json