У світі Linux, маніпуляція текстовими даними відіграє велику роль у виконанні різних завдань. Вона дозволяє вам ефективно аналізувати, обробляти та перетворювати тексти за допомогою різних інструментів та команд. Це особливо корисно для роботи з великими обсягами даних, такими як лог-файли, конфігураційні файли, CSV-файли та інші. Одним з потужних інструментів, доступних в Linux для маніпуляції текстом, є командний рядок інтерпретатора шелу, такий як Bash. З його допомогою ви можете виконувати різні операції з текстом, такі як пошук, заміна, сортування, фільтрація та інші. Крім того, ви можете використовувати регулярні вирази, що дозволяють здійснювати потужну обробку тексту за певними шаблонами. Linux також має велику кількість утиліт, що спрощують маніпуляцію текстом.
Наприклад, програма AWK дозволяє виконувати складні операції обробки тексту з використанням поля і записувальних правил. Система потоків Linux (Linux Stream) дозволяє вам комбінувати кілька команд для обробки тексту, створюючи потужні трубопроводи (pipelines). “Маніпуляція текстом в Linux” надає вичерпну інформацію про різні методи, інструменти та техніки для роботи з текстом в Linux. Ви дізнаєтеся про регулярні вирази, команди для пошуку та заміни тексту, обрізання та сортування файлів, фільтрацію та інші корисні прийоми. Крім того, ми надаємо практичні приклади та поради, як використовувати ці навички в реальних сценаріях. Отримайте необхідні навички для ефективної маніпуляції текстом у Linux. “Маніпуляція текстом в Linux” – ваш ключ до успішного опанування цієї важливої навички. Почніть вивчати маніпуляцію текстом у Linux вже сьогодні і підвищуйте свою продуктивність у роботі з текстовими даними.
Як продемонстровано в розділі 1, найпростішою командою відображення тексту, ймовірно, є cat, але вона має його обмеження. Використовуйте cat для відображення конфігураційного файлу Snort (snort.conf), знайденого в/etc/snort (див. Список 21).
kali >cat /etc/snort/snort.conf
Список 21: Відображення snort.conf у вікні терміналу
Тепер на екрані має відображатися весь файл snort.conf, який транслюватиметься, доки файл не дійде до кінця, як показано тут. Це не найзручніший або не найпрактичніший спосіб перегляду та роботи з цим файлом.
# включити $SO_RULE_PATH/exploit.rules
У наступних двох розділах я покажу вам команди head and tail, які є двома методами відображення лише частини вмісту файлу, щоб полегшити перегляд ключового вмісту.
Якщо ви хочете просто переглянути початок файлу, ви можете скористатися командою head . За замовчуванням ця команда відображає перші 10 рядків файлу. Наприклад, наступна команда показує вам перші 10 рядків snort.conf:
kali >голова /etc/snort/snort.conf
Якщо потрібно побачити більше або менше 10 рядків за замовчуванням, введіть потрібну кількість
Перемикач тире (-) після виклику до голови та перед іменем файлу. Наприклад, якщо ви хочете побачити перші 20 рядків файлу, ви повинні ввести команду, показану у верхній частині списку 22.
kali >голова -20 /etc/snort/snort.conf
VRT Пакети правил Snort.conf
Список 22: відображення перших 20 рядків snort.conf у вікні терміналу
Ви повинні побачити тільки перші 20 рядків snort.conf, що відображаються у вікні вашого терміналу.
Схопивши цей хвіст
Tail команда схожа на head, але використовується для перегляду останніх рядків файлу. Давайте використаємо його на snort.conf:
kali >хвіст /etc/snort/snort.conf #include $SO_RULE_PATH/smtp.rules #include $SO_RULE_PATH/specificthreats.rules #include $SO_RULE_PATH/webactivex.rules #include $SO_RULE_PATH/webclient.rules #include $SO_RULE_PATH/webiis.rules #include $SO_RULE_PATH/webmiscp.rules
Зверніть увагу, що ця команда відображає деякі з останніх рядків включення файлів правил, але не всі, оскільки, подібно до head, типовим для хвоста є показ 10 рядків. Ви можете відобразити більше рядків, захопивши останні 20 рядків snort.conf. Як і у випадку з командою head, ви можете вказати хвостику, скільки рядків потрібно відобразити, ввівши тире (-), а потім кількість рядків між командою та іменем файлу, як показано в списку 23.
kali >хвіст -20 /etc/snort/snort.conf #include $SO_RULE_PATH/chat.rules #include $SO_RULE_PATH/chat.rules #include $SO_RULE_PATH/chat.rules Снип #Event порогові або придушувальні команди.
Список 23: Відображення останніх 20 рядків snort.conf у вікні терміналу Тепер ми можемо переглядати майже всі рядки включення файлів правил на одному екрані.
Іноді, особливо з дуже довгими файлами, ми можемо захотіти, щоб у файлі відображалися номери рядків. Оскільки snort.conf має більше 600 рядків, тут будуть корисні номери рядків. Це полегшує посилання на зміни та повернення до того самого місця у файлі.
Для відображення файлу з номерами рядків використовуємо команду nl (number lines). Просто введіть команду, показану в списку 24.
kali >nl/etc/snort/snort.conf 612 ################################################################# 613 #dynamic library rules 614 #include $SO_RULE_PATH/badtraffic.rules 615 #include $SO_RULE_PATH/chat.rules snip 630 #include $SO_RULE_PATH/webiis.rules 631 #include $SO_RULE_PATH/webmisc.rules
Лістинг 24: Відображення номерів рядків на виході терміналу
Кожен рядок тепер має номер, що значно полегшує посилання на посилання.
Команда grep – це, мабуть, найбільш широко використовувана команда маніпулювання текстом. Це дозволяє фільтрувати вміст файлу для відображення. Якщо, наприклад, ви хочете побачити всі рядки, які містять вихідне слово у вашому файлі snort.conf, ви можете використати cat і попросити його відображати лише ці рядки (див. Список 25).
kali >cat/etc/snort/snort.conf|grepoutput # 6) Configure output plugins # Step #6: Configure output plugins # output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types # output alert_unified2: filename merged.log, limit 128, nostamp # output log_unified2: filename merged.log, limit 128, nostamp # output alert_syslog: LOG_AUTH LOG_ALERT # output log_tcpdump: tcpdump.log
Список 25: Відображення рядків з екземплярами ключового слова або фрази, вказаної grep
Ця команда спочатку перегляне snort.conf, а потім використає трубу (|), щоб надіслати його до grep, який візьме файл за вхідні дані, шукайте рядки з входженнями слова та відображайте лише ці рядки. Команда grep є дуже потужною та важливою командою для роботи в Linux, оскільки вона може заощадити вам години пошуку кожного входження слова чи команди у файлі.
Скажімо, ви хочете відобразити п’ять рядків безпосередньо перед рядком, який говорить # Крок # 6:
Налаштуйте вихідні плагіни, використовуючи принаймні чотири команди, які ви щойно вивчили. Як би ви це зробили? (Підказка: існує набагато більше варіантів цих команд, ніж ті, які ми обговорювали. Ви можете вивчити більше команд за допомогою вбудованої команди Linux. Наприклад, man tail покаже файл довідки для команди tail.) Є багато способів вирішити цю проблему; тут я покажу вам, які лінії змінити, щоб зробити це одним способом, і ваше завдання полягає в тому, щоб знайти інший метод.
kali >nl/etc/snort.conf|grepoutput 34 # 6) Configure output plugins 512 # Step #6: Configure output plugins 518 # output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types 521 # output alert_unified2: filename snort.alert, limit 128, nostamp 522 # output log_unified2: filename snort.log, limit 128, nostamp 525 # output alert_syslog: LOG_AUTH LOG_ALERT 528 # output log_tcpdump: tcpdump.log We can see that the line #Step#6:Configureoutputpluginsis line 512, and we know we want the five lines preceding line 512 as well as line 512 itself (that is, lines 507 to 512).
kali >tail-n+507/etc/snort/snort.conf|head-n6 nested_ip inner, \ whitelist $WHITE_LIST_PATH/white_list.rules, \ blacklist $BLACK_LIST_PATH/black_list.rules ################################################### # Step #6: Configure output plugins Here, we use tailto start at line 507 and then output into head, and we return just the top six lines, giving us the five lines preceding the Step#6line, with that line included.
Команда sed дозволяє шукати входження слова або шаблону тексту, а потім виконувати певну дію над ним. Назва команди є скороченням редактора потоку, оскільки вона дотримується тієї ж концепції, що і редактор потоку. У своїй найпростішій формі sed працює як функція пошуку та заміни в Windows.
Шукайте слово mysql у файлі snort.conf за допомогою grep, наприклад:
kali >cat /etc/snort/snort.conf | grep mysql include $RULE_PATH/mysql.rules #include $RULE_PATH/servermysql.rules
Ви повинні побачити, що команда grep знайшла два випадки mysql.
Скажімо, ви хочете, щоб sed замінив кожне входження mysql на MySQL (пам’ятайте, Linux чутливий до регістру), а потім збережіть новий файл у snort2.conf. Ви можете зробити це, ввівши команду, показану в списку 26.
kali >sed s/mysql/MySQL/g /etc/snort/snort.conf > snort2.conf
Список 26: Використання sed для пошуку та заміни ключових слів або фраз
Команда s виконує пошук: спочатку ви даєте термін, який ви шукаєте (mysql), а потім термін, на який ви хочете його замінити (MySQL), розділені косою рискою (/). Команда g повідомляє Linux, що ви хочете, щоб заміна виконувалася глобально. Потім результат зберігається в новий файл з ім’ям snort2.conf.
Тепер, коли ви використовуєте grep з snort2.conf для пошуку mysql, ви побачите, що екземплярів не знайдено, але коли ви шукаєте MySQL, ви побачите два випадки.
kali >cat snort2.conf | grep MySQL включають $RULE_PATH/MySQL.rules #include $RULE_PATH/serverMySQL.rules
Якби ви хотіли замінити лише перше входження терміна mysql, ви б не використовували кінцеву команду g .
kali >sed s/mysql/MySQL/ snort.conf > snort2.conf
Ви також можете використовувати команду sed, щоб знайти і замінити будь-яке конкретне входження слова, а не всі випадки або тільки перше входження. Наприклад, якщо ви хочете замінити тільки друге входження слова mysql, просто помістіть номер входження (в даному випадку 2) в кінці команди:
kali >sed s/mysql/MySQL/2 snort.conf > snort2.conf
Ця команда впливає тільки на друге входження mysql.
Хоча cat є хорошою утилітою для відображення файлів і створення невеликих файлів, вона, безумовно, має свої обмеження при відображенні великих файлів. Коли ви використовуєте cat з snort.conf, файл прокручує кожну сторінку, поки не дійде до кінця, що не дуже практично, якщо ви хочете почерпнути з нього будь-яку інформацію.
Для роботи з більшими файлами у нас є ще дві утиліти перегляду: більше і менше.
Команда “Додатково ” відображає сторінку файлу за раз і дозволяє переглядати її вниз за допомогою клавіші ENTER. Це утиліта, яку використовують сторінки людини, тому давайте спочатку розглянемо її. Відкрийте snort.conf командою more, як показано в списку 27.
kali >more /etc/snort/snort.conf
# Варіанти збірки Snort:
# Параметри: enablegre enablempls enabletargetbased enableppm enableperfprofiling enablezlib enableactive Response enablenormalizer enablereload enablereact enableflexresp3
Більше (2%) Список 27: Використання більшої кількості для відображення термінального виводу по одній сторінці за раз
Зверніть увагу, що more відображає лише першу сторінку, а потім зупиняється, і повідомляє нам у нижньому лівому кутку, яка частина файлу відображається (2 відсотки в цьому випадку). Щоб переглянути інші рядки або сторінки, натисніть клавішу ENTER. Щоб вийти більше, введіть q (для quit).
Відображення та фільтрування з меншими витратами
Команда less дуже схожа на більшу, але з додатковою функціональністю — звідси поширена фраза шанувальників Linux: «Менше означає більше». Маючи менше, ви можете не тільки прокручувати файл на дозвіллі, але й фільтрувати його за термінами. Як і в списку 28, відкрийте snort.conf з меншою кількістю.
kali >less /etc/snort/snort.conf Снип
# Варіанти збірки Snort:
# Параметри: enablegre enablempls enabletargetbased enableppm enableperfprofiling enablezlib enableactive Response enablenormalizer enablereload enablereact /etc/snort/snort.conf
Список 28: Використання меншої кількості як для відображення терміналу, так і для виведення сторінки за раз, і для фільтрування результатів
Зверніть увагу в лівому нижньому куті екрана, що менше виділено шлях до файлу. Якщо натиснути клавішу прямої скісної риски (/), менше дозволить вам шукати терміни у файлі. Наприклад, коли ви вперше налаштовуєте Snort, вам потрібно визначити, як і куди ви хочете надсилати вихід попередження про вторгнення. Щоб знайти цей розділ файлу конфігурації, ви можете просто шукати вихідні дані, наприклад:
# Варіанти збірки Snort:
# Параметри: enablegre enablempls enabletargetbased enableppm enableperfprofiling enablezlib enableactive Response enablenormalizer enablereload enablereact / output
Це відразу приведе вас до першого появи виходу і виділить його. Потім ви можете шукати наступне входження виводу, ввівши n (для наступного).
# Крок # 6: Налаштування вихідних плагінів # Для отримання додаткової інформації дивіться Посібник з пирхання, Налаштування модулів виведення Snort
#unified2 # Рекомендовано для більшості встановлень # вихід unified2: ім'я файлу об'єднано.log, ліміт 128, nostamp, mpls_event_types, vlan_event_types вивід unified2: ім'я файлу snort.log, limit 128, nostamp, mpls_event_types, vlan_event_types # Додаткова конфігурація для певних типів інсталяцій # вихід alert_unified2: ім'я файлу snort.alert, ліміт 128, nostamp # Вихід log_unified2: Назва файлу Snort.log, ліміт 128, nostamp # syslog # alert_syslog на виході: LOG_AUTH LOG_ALERT :
Як бачите, менше перенесло вас на наступне входження слова виводу і виділило всі пошукові терміни. У цьому випадку він перейшов безпосередньо до вихідної секції Snort. Як зручно!
Linux має безліч способів маніпулювання текстом, і кожен спосіб має свої сильні та слабкі сторони. У цьому розділі ми торкнулися кількох найкорисніших методів, але я пропоную вам спробувати кожен з них і розвинути власні почуття та переваги. Наприклад, я думаю, що grep незамінний, і я використовую менш широко, але ви можете відчувати себе по-іншому.
Ми використовували матеріали з книги “LINUX BASICS FOR HACKERS”, які написав William Pollock