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