AWK:在每一行上执行CURL并解析结果

flo*_*flo 6 shell awk curl

给定一个带有以下行的输入流:

123
456
789
098
...
Run Code Online (Sandbox Code Playgroud)

我想打个电话

curl -s http://foo.bar/some.php?id=xxx
Run Code Online (Sandbox Code Playgroud)

xxx是每行的编号,每次让awk脚本从curl输出中获取一些写入输出流的信息.我想知道如果不使用awk"system()"调用以下方式是否可行:

cat lines | grep "^[0-9]*$" | awk '
    {
        system("curl -s " $0 \
        " | awk \'{ #parsing; print }\'")
    }'
Run Code Online (Sandbox Code Playgroud)

小智 0

shell 循环将实现类似的结果,如下所示:

#!/bin/bash
for f in $(cat lines|grep "^[0-9]*$"); do 
    curl -s "http://foo.bar/some.php?id=$f" | awk '{....}'
done
Run Code Online (Sandbox Code Playgroud)

执行类似任务的替代方法包括使用 Perl 或 Python 与 HTTP 客户端。