#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. Вы хотите отредактировать свой вопрос, чтобы включить все эти примеры, и более подробно объяснить, почему некоторые из них следует исключить.