2011-09-28 66 views
0

我已在我的脚本如下:解析和对在bash脚本解析值赋予功能

function processurl 
{ 
} 

SOME_TEXT %%%为url1 %%% URL2 %%% URL3 %%%

与数网址0之间变化到任何有限数量的(在0情况下,字符串是SOME_TEXT %%%)

的我想申请processurl到的网址,并给输出为:

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

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

回答

1

这其实是同一个问题,因为这(也由你) Scripting in Bash

,你可以在你的processURL功能保存为一个脚本,期待参数,并在AWK发送$我这个剧本,并得到结果。 (你可以在awk中使用getline)。

看到我在其他问题的答案,有一个例子。

+0

非常感谢。事实上,他们是一样的,只是这个问题不是很清楚。编辑帖子后,我觉得这可能会使其他建议的答案看起来不相关。再次感谢您的回答:) – w2lame

+0

没问题,很乐意帮忙。 – Kent

+0

任何关于“间距”问题的想法(或者更确切地说是我的任何特殊字符) – w2lame

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

+0

正如@Kent所建议的那样,您可以避免使用建议的解决方案进行划分和连接。 – w2lame