0

我的脚本中有以下内容:

function processurl
{
}

some_text%%%url1%%%url2%%%url3%%%

url 的数量在 0 到任何有限数之间变化(如果为 0,则字符串为 some_text%%%)

我想将 processurl 应用于 url 并将输出为:

some_text%%%processurl url1%%%processurl url2%%%processurl url3%%%

关于如何做到这一点的任何线索?

4

2 回答 2

1

在像 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 克里斯

于 2011-09-28T06:05:15.617 回答
1

这实际上与这个(也来自你) 脚本在 Bash 中的问题相同

您可以将您的 processURL 函数保存为脚本,期待参数,并在 awk 中将 $i 发送到该脚本,并获得结果。(你可以在 awk 中使用 getline)。

看到我在另一个问题中的回答,有一个例子。

于 2011-09-28T08:49:22.857 回答