在提交文件之前编辑awk抓取的值

时间:2014-06-17 13:34:29

标签: bash file awk

我有以下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,有些会有其他文本,有些会有没有)

感谢您抽出宝贵时间来查看我的问题!

2 个答案:

答案 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