Разбор и применение функции к анализируемым значениям в bash-скриптах - PullRequest
0 голосов
/ 28 сентября 2011

В моем скрипте есть следующее:

function processurl
{
}

some_text %%% %%% url1 URL2 %%% %%% url3

с числом URL-адресов, варьирующимся от 0 до любого конечного числа (в случае 0 строка имеет значение some_text %%%)

Я хочу применить processurl к URL-адресам и дать вывод:

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

Есть какие-нибудь подсказки, как это сделать?

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

это на самом деле тот же вопрос, что и этот (также от вас) Сценарии в Bash

вы можете сохранить свою функцию processURL в виде сценария, ожидая параметр и отправив в awk $Я к этому сценарию, и получить результат.(вы можете использовать getline в awk).

см. мой ответ в другом вопросе, есть пример.

1 голос
/ 28 сентября 2011

в таком языке, как awk, вы не можете передать функцию в качестве аргумента. Таким образом, вы должны сделать это наоборот. Сначала нужно разделить ввод, обработать его и снова присоединить. Вы можете сделать это так:

Это разделит ввод:

awk -F"%%%" '{for(i=2;i<=NF;i++){if (i==NF){print ""}else print $i}}' file

Теперь вы можете прочитать его и применить свою функцию, которую вы должны сохранить в сценарии оболочки "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 Крис

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...