首页 > 解决方案 > 从 url 读取参数

问题描述

我正在尝试从 URL 读取参数,我可以读取单行但我不知道如何在 awk 中循环,有人可以帮忙吗?

我有 1000 多个条目的文件,例如

http://projectreporter.nih.gov/project_info_details.cfm?aid=7714687&icde=0
http://projectreporter.nih.gov/project_info_description.cfm?aid=7896503&icde=0
http://projectreporter.nih.gov/project_info_details.cfm?aid=7895320&icde=0
http://projectreporter.nih.gov/project_info_details.cfm?aid=2675186&icde=9195637

我试图只检索“aid = xxxxxxx”,我使用以下命令来完成它,我得到了最后一行的“aid”

awk '{match($0,"aid=([^ &]+)",a)}END{print a[1]}' file1.txt > outputFile.txt

如何在循环中做同样的事情,这样我就可以得到所有的发生?任何帮助,将不胜感激

标签: unixawk

解决方案


这应该对您尝试的代码进行一些微调。

awk 'match($0,/aid[^&]*/){print substr($0,RSTART,RLENGTH)}' Input_file


如果您的单行可能出现多次aid并且您想全部打印,请尝试以下操作。

awk '
{
  while(match($0,/aid[^&]*/)){
    print substr($0,RSTART,RLENGTH)
    $0=substr($0,RSTART+RLENGTH)
  }
}
' Input_file

推荐阅读