Найдите животное-060, животное-061, животное-062 ..., животное-069 в .txt с помощью терминала linux - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу найти строку animal-0 ** в документе .txt с помощью терминала linux.** это числа от 60 до 69. Я думаю, мне нужно использовать grep и regex с командой: grep -E 'animal-0[60-69]' animallist.txt

Это будет правильная команда, или она также найдет ima6, например, потому что ima60 является частью цифр и букв в ''.Извините за грамматические ошибки, английский не является моим родным языком.

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Ты довольно близко!Помните, что классы символов регулярных выражений (наборы или диапазоны в квадратных скобках) ищут диапазон символов и будут совпадать только один раз, если вы не укажете иначе с помощью * или + и т. Д. В вашем примере [60-69] совпадает с[690-6], который будет соответствовать любому отдельному 6, 9 или символу в диапазоне 0-6.Чтобы найти числа от 60 до 69, мы должны смотреть на числа в виде строки.

Взять это в качестве примера: вместо «60» - «69», давайте предположим, что мы ищем «Za»в "Zj".В этом случае мы будем использовать шаблон Z[a-j].

Используя приведенный выше пример для вашей задачи, мы можем взять «6» вместо «Z» и заменить «aj» на «0-9», даваяиспользуя шаблон:

animal-06[0-9]

В качестве полной команды это будет:

grep -E 'animal-06[0-9]' animallist.txt
0 голосов
/ 15 ноября 2018

Да, если вы будете использовать grep -E 'animal-06[0-9]' animallist.txt, это будет работать

0 голосов
/ 15 ноября 2018
grep -E 'animal-06[0-9]' animallist.txt 

И нет, он не найдет ima60.Ваш [60-69] тоже не будет делать то, что вы думаете.Найдите хороший ресурс, который учит RegEx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...