LINUX.ORG.RU

результат работы awk в функцию

 ,


2

2

не соображу как результат работы awk передать в bash функцию ?

f()
{
    echo $1 $2
}

...
echo $line | gawk -vFPAT='[^,]*|"[^"]*"' '{print $1 "," $2}'
# тут хочу вывод awk передать в f

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

f `echo $line | gawk -vFPAT='[^,]*|"[^"]*"' '{print $1, $2}'`

Proof:

f() { echo "First: $1, Second: $2"; }
f `echo abc uvw zyz | awk '{print $1, $2}'`
First: abc, Second: uvw
beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от beastie

да, логика понятно, спасибо
только у меня в $1 и $2 есть пробелы и кавычки, надо учесть это

x905 ★★★★★
() автор топика
Ответ на: комментарий от anonymous
f(){ echo $1 $2;}
l="2016-01-21 13:39:04.373 MSK,\"ad,min\""
echo $l
echo $l | gawk -vFPAT='[^,]*|"[^"]*"' '{print "\""$1"\"", "\""$2"\""}'
f `echo $l | gawk -vFPAT='[^,]*|"[^"]*"' '{print "\""$1"\"", "\""$2"\""}'`

...

2016-01-21 13:39:04.373 MSK,"ad,min"
"2016-01-21 13:39:04.373 MSK" ""ad,min""
"2016-01-21 13:39:04.373
x905 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

sh нужен для передачи данных в другой способ )

x905 ★★★★★
() автор топика

Для таких кейсов я бы использовал потоки:

echo $line | gawk -vFPAT='[^,]*|"[^"]*"' '{print $1 "\n" $2}' | f

Естественно, если в самой функции нет ввода.

Ну, сам подправишь как тебе нужно.

Пример:
$ f()
{
  read arg1
  read arg2

  echo $arg1 ---- $arg2
}

$ echo -e "First argument\nSecond argument" | f
First argument ---- Second argument

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

да, тоже интересный вариант, учту

x905 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.