<Попередній | зміст | Наступна>
Перевірка списку телефонів за допомогою grep
У нашому попередньому прикладі ми розглянули окремі номери телефону та перевірили їх на належне форматування. Більш реалістичним сценарієм буде перевірка списку чисел, тому давайте складемо список. Ми зробимо це, прочитавши магічний заклинання в командному рядку. Це буде магія, тому що ми не розглянули більшість залучених команд, але не хвилюйтеся. Ми потрапимо туди в наступних розділах. Ось заклинання:
[me@linuxbox ~]$ для i в {1..10}; do echo "(${RANDOM:0:3}) ${RANDO M:0:3}-${RANDOM:0:4}" >> phonelist.txt; зроблено
[me@linuxbox ~]$ для i в {1..10}; do echo "(${RANDOM:0:3}) ${RANDO M:0:3}-${RANDOM:0:4}" >> phonelist.txt; зроблено
Ця команда створить файл з іменем phonelist.txt містить десять телефонних номерів. Кожного разу, коли команда повторюється, до списку додається ще десять номерів. Ми також можемо змінити значення 10 біля початку команди, щоб створити більше або менше телефонних номерів. Однак якщо ми перевіримо вміст файлу, ми побачимо, що маємо проблему:
[me@linuxbox ~]$ cat phonelist.txt
(232) | 298-2265 |
(624) | 381-1078 |
(540) | 126-1980 |
(874) | 163-2885 |
(286) | 254-2860 |
(292) | 108-518 |
(129) | 44-1379 |
(458) | 273-1642 |
(686) | 299-8268 |
(198) | 307-2440 |
Деякі цифри неправильно сформовані, що ідеально підходить для наших цілей, оскільки ми будемо використовувати
grep, щоб підтвердити їх.
Одним із корисних методів перевірки було б просканувати файл на наявність недійсних чисел і відобразити отриманий список:
[me@linuxbox ~]$ grep -Ev '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$'
phonelist.txt (292) 108-518
(129) 44-1379
[me@linuxbox ~]$
[me@linuxbox ~]$ grep -Ev '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$'
phonelist.txt (292) 108-518
(129) 44-1379
[me@linuxbox ~]$
Тут ми використовуємо -v можливість створити зворотну відповідність, щоб ми виводили лише рядки у списку, які не відповідають вказаному виразу. Сам вираз містить метасимволи прив’язки на кожному кінці, щоб гарантувати, що число не має зайвих символів на обох кінцях. Цей вираз також вимагає, щоб дужки були присутні в правильному числі, на відміну від нашого попереднього прикладу номера телефону.