ПРИМЕЧАНИЕ: этот вопрос является дополнением к этим вопросам и ответам: как "grep" для длины строки * не * в данном диапазоне?
Мне нужно получить только строки из текстового файла (словаря, разделенного новой строкой), который имеет диапазон длин не менее 3 символов, но не более 10.
Пример:
ВХОД:
egyezményét
megkíván
ki
alma
kevesen
meghatározó
ВЫХОД:
megkíván
alma
kevesen
Вопрос: Как я могу сделать это в bash
?
grep -x '.\{3,10\}'
Ответы:
где
-x
сопоставить шаблон с целой линией.
любой символ{3,10}
количественно от 3 до 10 раз превратить предыдущий символ (в случае любых)источник
используя egrep
соответствует от начала до конца строк для 3 или более символов, но не более 10 символов.
источник
Использование
sed
:Или:
источник
Использование
awk
:Оператор
length
возвращает длину$0
(текущую запись / строку) по умолчанию, и это используется кодом для проверки, находится ли длина строки в заданном диапазоне. Если у такого теста нет соответствующего блока действий, то действием по умолчанию является печать записи.Тестирование по приведенным данным:
Аналогично с Perl:
источник