LINUX.ORG.RU
ФорумAdmin

вывод столбца из строки по условию

 , ,


0

1

Всем Привет!
Есть строка лога:

Apr  3 06:35:23 proxy-squid pppd[8703]: pptpd-logwtmp.so ip-up ppp1 DOMAIN\user 192.168.1.1
такой конструкцией:
grep 192.168.1.1 /var/log/syslog | grep ip-up  | cut -d' ' -f9 | tail -n 1
получаю нужное, например:
ppp1
что меня устраивает. Но иногда выводится не то, что надо, например:
ip-up
и перестает работать то, что должно. Подскажите, пожалуйста, как из строки выдернуть столбец по условию нахождения символов «ppp»?

у тебя либо формат строки меняется (колонки съезжают), либо какая-то «чужая» строка лезет в вывод из-за слишком широкого фильтра

да и вообще, ты делаешь что-то не то, лучше опиши изначальную задачу

anonymous ()

Между Apr 3 — два пробел, а когда будет Apr 10 и т.д. получится один пробел, вот у тебя cut на одну колонку и съежает

Используй awk '{print $(NF-2)}'  — третья колонка с конца строки

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

awk себе такой херни не позволяет, поэтому можно колонки считать и с начала строки:

$ echo "111 222 333 444" | awk '{print $3}'
333
$ echo "111  222 333 444" | awk '{print $3}'
333
$

anonymous ()

1 vs 4

sed -rn 's/.*ip-up ([^ ]*).*192.168.1.1.*/\1/p' /var/log/syslog

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