[Решено] awk два условия поиска

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
bars
Сообщения: 902
ОС: BSD/LINUX

[Решено] awk два условия поиска

Сообщение bars »

Привет.
Стало интересно можно как то сделать два условия поиска в awk?
к примеру.
3 строки.

Код: Выделить всё

1 2 3 8
1 2 3 4 6
5 4 3 2 1 0 6
1 2 3 4 5
awk поиск строки с нужным содержимым.
awk '/5/ && /0/ {print $2}'
Последний раз редактировалось bars 06.10.2022 15:51, всего редактировалось 3 раза.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: awk два условия поиска

Сообщение olecya »

У меня только одна догадка. Вы забыли про оператор ИЛИ || ?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20719
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: awk два условия поиска

Сообщение Bizdelnick »

Я ничего не понял. Это хотя бы был вопрос или ответ?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 902
ОС: BSD/LINUX

Re: awk два условия поиска

Сообщение bars »

olecya писала:
06.10.2022 13:31
У меня только одна догадка. Вы забыли про оператор ИЛИ || ?
нее, нужно что бы два условия поиска в строке совпало.
Добавлено (15:44):
При таком использовании команды

Код: Выделить всё

awk '/5|0/ {print $2}'
Будут выданы две строки

Код: Выделить всё

5 4 3 2 1 0 6
1 2 3 4 5
Будет поиск двух условия по всем строкам.
Меня интересует когда оба условия в строке совпали, только тогда выводить результат.
Добавлено (15:50):
Решения нашел.
Странно почему в первом случае не сработало.

Код: Выделить всё

awk '/5/ && /0/ {print $2}'
5 4 3 2 1 0 6
Будет осуществлен двух условия в строке и если все два условия совпали у строки, то показывает результат
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: [Решено] awk два условия поиска

Сообщение olecya »

bars
Да, иногда это полезно, потому что нет привязки в жесткой последовательности как например в регулярном выражении:
/5.*0/ - только в таком порядке, но /5/ && /0/ может совпадать с любой последовательностью.

Я вспомнила задачу на забугорном форуме которую получил и выложил соискатель должности сисадмина. Надо было в конкретном тексте найти спрятанный пароль без подглядывания в сам текст и без брутфорса. Я быстро додумалась как это сделать и только один инструмент в оболочке для этого подходит идеально. С помощью текстового процессора разбиваешь текст на слова и таким вот способом проверяешь одновременное наличие в слове букв разного регистра, цифр, знаков пунктуации, что-то вида:

Код: Выделить всё

awk '/[a-z/ && /A-Z/ && /[0-9]/ && [_[:punct:]]' RS='[[:space:]]+' file
К сожалению этим ответом внесла некоторую неловкость так в теме уже успели отметиться очень грамотные люди работники серьезных компаний (похоже у них замылился глаз и они начали копать слишком глубоко), а я не удосужилась подумать о возможном казусе для их имиджа (я недавно пришла на форум). Увы, на западе даже модераторство рассматривается в первую очередь как дополнительная запись в резюме, а не как наши альтруисты...
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 902
ОС: BSD/LINUX

Re: [Решено] awk два условия поиска

Сообщение bars »

olecya писала:
06.10.2022 16:37
но /5/ && /0/ может совпадать с любой последовательностью.
Мне особо строгая последовательность не нужна была, просто что бы совпало два условия поиска в строке и после показать второй пункт из строки.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали: