Форум — Admin AWK 0 1 Подскажите, как можно сделать это одним вызовом awk:echo '1111 2222_3333'|awk '{print $2}'|awk -F '_' '{print $2}' Ссылка
$ echo '1111 2222_3333'|awk '{print $2}'|awk -F '_' '{print $2}' 3333 $ echo '1111 2222_3333'|awk -F '_' '{print $2}' 3333 dada ★★★★★ (09.10.14 04:30:43 UTC) Ссылка
Возможно, нужно вот это: awk '{split($2, a, "_"); print a[2];}' mky ★★★★★ (09.10.14 04:44:10 UTC) Ссылка
echo '1111 2222_3333'|awk -F ' |_' '{print $3}' sin_a ★★★★★ (09.10.14 04:59:34 UTC) Показать ответ Ссылка
Ответ на: комментарий от sin_a 09.10.14 04:59:34 UTC приведен не совсем удачный пример. Но вот это: echo '1111 2222_3333'|awk '{print $2}'нужно выполнить обязательно. Вопрос в том, можно ли повторное вхождение в awk выполнить в первом входе? anonymus123 (09.10.14 05:10:36 UTC) автор топика Показать ответы Ссылка
Ответ на: комментарий от anonymus123 09.10.14 05:10:36 UTC тебе очевидно нужен split, который посоветовал mky zolden ★★★★★ (09.10.14 05:25:06 UTC) Ссылка
Ответ на: комментарий от anonymus123 09.10.14 05:10:36 UTC Но вот это:echo '1111 2222_3333'|awk '{print $2}'нужно выполнить обязательно.Зачем? Изначально результат именно этого ведь всё равно не выводится. yoghurt ★★★★★ (09.10.14 05:26:14 UTC) Показать ответ Ссылка
Ответ на: комментарий от yoghurt 09.10.14 05:26:14 UTC Кстати да. sin_a ★★★★★ (09.10.14 05:29:00 UTC) Ссылка
Ответ на: комментарий от anonymus123 09.10.14 05:10:36 UTC Какой нужен результат? sin_a ★★★★★ (09.10.14 05:34:40 UTC) Показать ответ Ссылка
Ответ на: комментарий от sin_a 09.10.14 05:34:40 UTC смысл такой, что вывод первого: awk '{print $2}' еще раз обработать ( {print $3} ) , но без конвеера и второго вхождения в awk ... Что то типа: '{print $2;print $3}' anonymus123 (09.10.14 06:10:45 UTC) автор топика Показать ответы Ссылка
Ответ на: комментарий от anonymus123 09.10.14 06:10:45 UTC Так? echo '1111 2222_3333'|awk -F ' |_' '{print $1 " " $2 " " $3}' Что в результате нужно вывести в данном примере? sin_a ★★★★★ (09.10.14 06:14:11 UTC) Ссылка
Ответ на: комментарий от anonymus123 09.10.14 06:10:45 UTC я не понимаю какой результат ты хочешь получить. $ echo '111 222 333' | awk '{print $2$3}' 222333 dada ★★★★★ (09.10.14 06:21:32 UTC) Ссылка
Ответ на: комментарий от anonymus123 09.10.14 06:10:45 UTC Если тебе надо просто из строки «1111 2222_3333» получить 2222, тебе нужен просто вариант mky - AWK (комментарий) yoghurt ★★★★★ (09.10.14 06:43:49 UTC) Ссылка
Ответ на: комментарий от anonymus123 09.10.14 06:10:45 UTC ...вывод первого awk '{print $2}' еще раз обработать...$ echo '1111 2222_3333' | awk '{ tmp = $2; FS = "_"; $0 = tmp; print $2 }' 3333 Но учти, что при таком подходе нужно возиться с восстановлением оригинального FS если целевых строк больше одной. unterwulf ★ (09.10.14 23:34:19 UTC) Ссылка