AWK — это мощный язык программирования с сопоставлением шаблонов, который работает в командной строке для поиска различных шаблонов в выходных данных команд и файлах.
Мы можем считать AWK улучшением по сравнению с Sed, поскольку он предлагает больше функций, включая массивы, переменные, циклы и старые добрые регулярные выражения.
В этом руководстве мы быстро обсудим, как можно использовать несколько разделителей в команде AWK. Прежде чем мы продолжим, обратите внимание, что это руководство не является руководством по AWK для начинающих, и я не имел его в виду.
Что такое разделители?
Я уверен, что, поскольку вы нашли время, чтобы прочитать эту статью, вы знакомы с концепцией разделителей. Но не помешает подвести итоги, так что давайте сделаем это сейчас:
Вкратце, разделители — это последовательность символов, используемых для разделения текстовых значений строк. Существуют различные распространенные типы разделителей, в том числе:
Имя | Символ |
Запятая | , |
Двоеточие | : |
Точка с запятой | ; |
Период | . |
Трубка | | |
Обратная косая черта | \ |
Слэш | / |
Скобки | () |
Фигурные скобки | {} |
Квадратных скобках | [] |
Пробел |
Разделитель полей AWK RegEx
Разделитель полей AWK (FS) используется для определения и управления тем, как AWK разбивает запись на различные поля. Кроме того, он может принимать один символ регулярного выражения. После того как вы укажете регулярное выражение в качестве значения для FS, AWK сканирует входные значения на предмет последовательности символов, заданных в регулярном выражении.
Мы собираемся реализовать функциональность AWK для приема значений регулярного выражения в разделителе полей для подключения нескольких разделителей.
Использовать несколько разделителей
Чтобы проиллюстрировать, как разделить с помощью нескольких разделителей в AWK, я буду использовать простой пример, чтобы показать вам, как использовать эту функцию.
Предположим, у вас есть файл со следующими данными:
/org/gnone/desktop/interface:established:Apr17 16.59.09|org.gnome.Terminal.desktop[1099]
Из приведенного выше файла мы хотим получить результат, аналогичный показанному ниже:
org/gnome/desktop/interface established Apr 17 16:59.09 org.gnome.Terminal.desktop[1099]
Чтобы разделить файл с помощью различных разделителей — в данном случае двоеточия, пробела и вертикальной черты — мы можем использовать команду, как показано ниже:
awk -F‘[: |]’ ‘{print $1, $2, $3, $4, $5, $6}’ user.log
Приведенная выше команда выводит информацию, как показано ниже:
Как видите, вы можете комбинировать более одного разделителя в разделителе полей AWK, чтобы получить конкретную информацию.
Заключение
В этом кратком руководстве мы обсудили использование AWK для разделения нескольких разделителей во входном файле.