справка по шаблону unix awk, он же. поиск не работает

#search #awk

#Поиск #awk

Вопрос:

новичок здесь просит о помощи

Мне нужно только перечислять строки, которые находятся в определенном формате:

<server>: (<#> dbs)<disk> <total>G <used>G <free>G <perc>% <mount>

wakanda: (5 dbs)/dev/sda1 12G 24G 12G 50% /

все строки, которые не соответствуют этому, не должны отображаться до сих пор, я пытался использовать грубую силу, пытаясь:

awk '$0~p' p=".*:*dbs*G*G*G*" ./testFile

но здесь также перечислены строки, подобные:

сервер: (207 dbs)

Я не понимаю, почему он будет прямо игнорировать Gs, я уже довольно долго гуглю, и в настоящее время я полностью потерян, пожалуйста, помогите

Комментарии:

1. * соответствует нулю или более экземпляров, поэтому G s игнорируются. Я считаю, что проверка моих регулярных выражений в онлайн-программе проверки помогает мне избежать проблем. например. regexr.com

Ответ №1:

Не могли бы вы, пожалуйста, попробовать следующее, написанное и протестированное с показанными примерами только в GNU awk .

 awk '/.*dbs.*([0-9] G ){3}/' Input_file
  

Объяснение: awk работает с методом условия (regexp), а затем с действием. Здесь я ставлю галочку для поиска регулярного .*dbs.*([0-9] G ){3} выражения в текущей строке, и если регулярное выражение найдено, то никаких действий не упоминается, поэтому по умолчанию печать строки не произойдет.

Комментарии:

1. Это было очень быстро и, похоже, очень правильно, спасибо. Я не хочу быть занозой в заднице, но не могли бы вы, пожалуйста, объяснить мне это, как я тупой, если у вас есть время?

2. @Zecmirit, уверен, что теперь добавил подробное объяснение, приветствую.

3. что ж, я изучил его немного лучше, и в нем были опущены две строки из тестовых файлов, которые, я думаю, в нем не должны быть: mysql5: (133 dbs) / dev / sda1 69 Г 68 Г 1,5 Г 98% / mysql16: (138 dbs) / dev / xvda 40 Г 34 Г 6,4 Г 84% / любойидея, почему?

4. @Zecmirit, это было основано только на вашей показанной попытке. Пожалуйста, обновите образцы ввода и ожидаемого результата в вашем вопросе и сообщите нам об этом.

5. Вы хотите отредактировать свой вопрос, чтобы включить все эти примеры, и более подробно объяснить, почему некоторые из них следует исключить.