Привет, у меня есть файл с 5-значными почтовыми индексами.
Я пытаюсь использовать grep для вывода почтовых индексов, начинающихся с 9 и могущих содержать только цифры от 4 до 7.
Команда, которую я использую, это
grep '[4-7], 9'$ zipcodesDataEntry.cvs
Проблема в том, что я получаю почтовые индексы, содержащие цифры 1 2 3 8. Мой вывод должен быть следующим:
95544
94554
94445
95567
Однако я получаю некоторые почтовые индексы, такие как:
91121
92231
Я пытаюсь исключить любые числа, кроме 9 и находящиеся в диапазоне 4-7.
решение1
Учитывая этот файл:
cat zipcodes
95544 94554 94445 92231 95567 91121
Я могу использовать этот grep:
egrep -o '9[4-7]{4}' zipcodes
95544
94554
94445
95567
решение2
Содержимое входного файла:
95544
94554
94445
95567
91121
92231
Используя awk
(если egrep
нет в наличии), вы можете попробовать что-то вроде этого:
awk '/9[4-7]{4}/' zip.txt
Выход:
95544
94554
94445
95567
решение3
grep '^9.[4-7].*' zipcodesDataEntry.cvs
- ^ Начало сравниваемой строки
- . (Точка) соответствует любому символу
- звездочка, ноль или больше