我的脚本中有以下内容:
function processurl
{
}
some_text%%%url1%%%url2%%%url3%%%
url 的数量在 0 到任何有限数之间变化(如果为 0,则字符串为 some_text%%%)
我想将 processurl 应用于 url 并将输出为:
some_text%%%processurl url1%%%processurl url2%%%processurl url3%%%
关于如何做到这一点的任何线索?
在像 awk 这样的语言中,您不能将函数作为参数传递。所以你必须反过来做。首先,您必须拆分输入,对其进行处理并再次加入。你可以这样做:
这将拆分输入:
awk -F"%%%" '{for(i=2;i<=NF;i++){if (i==NF){print ""}else print $i}}' file
现在您可以逐行阅读并应用您的函数,您应该将其保存在 shell 脚本“processurl”中:
| while read url; do ./processurl $url; done
并再次加入:
awk 'BEGIN{RS=""}{for (i=1;i<=NF;i++)
{if (i==NF){printf "\s%%%%%%\n",$i}else{printf "%s%%%%%%",$i}}}'
HTH 克里斯
这实际上与这个(也来自你) 脚本在 Bash 中的问题相同
您可以将您的 processURL 函数保存为脚本,期待参数,并在 awk 中将 $i 发送到该脚本,并获得结果。(你可以在 awk 中使用 getline)。
看到我在另一个问题中的回答,有一个例子。