2011-09-28 64 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