8 мощных встроенных переменных Awk - FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

  1. 1. Awk FS Пример: переменная поля ввода поля.
  2. 2. Пример Awk OFS: переменная разделителя выходного поля
  3. 3. Пример Awk RS: переменная разделителя записей
  4. 4. Пример Awk ORS: переменная разделителя выходных записей
  5. 5. Awk NR Пример: переменная количества записей
  6. 6. Пример Awk NF: количество полей в записи
  7. 7. Awk FILENAME Пример: имя текущего входного файла
  8. 8. Пример Awk FNR: количество записей относительно текущего входного файла
  9. Рекомендуемое чтение

Эта статья является частью продолжающегося   Awk Tutorial Примеры   серии Эта статья является частью продолжающегося Awk Tutorial Примеры серии. В Awk есть несколько мощных встроенных переменных. В Awk есть два типа встроенных переменных.

  1. Переменная, которая определяет значения, которые могут быть изменены, такие как разделитель полей и разделитель записей.
  2. Переменная, которая может использоваться для обработки и отчетов, таких как количество записей, количество полей.

1. Awk FS Пример: переменная поля ввода поля.

По умолчанию Awk читает и анализирует каждую строку из ввода на основе символа пробела и устанавливает переменные $ 1, $ 2 и т. Д. Переменная Awk FS используется для установки разделителя полей для каждой записи. Awk FS может быть установлен на любой отдельный символ или регулярное выражение. Вы можете использовать разделитель поля ввода, используя один из следующих двух вариантов:

  1. Использование опции -F командной строки.
  2. Awk FS можно установить как обычную переменную.

Синтаксис: $ awk -F 'FS' 'команды' inputfilename (или) $ awk 'BEGIN {FS = "FS";}'

  • Awk FS - это любой отдельный символ или регулярное выражение, которое вы хотите использовать в качестве разделителя поля ввода.
  • Awk FS может быть изменен любое количество раз, он сохраняет свои значения, пока не будет явно изменен. Если вы хотите изменить разделитель полей, его лучше изменить, прежде чем читать строку. Так что это изменение влияет на строку, которую вы читаете.

Вот пример awk FS для чтения файла / etc / passwd, который имеет «:» в качестве разделителя полей.

$ cat etc_passwd.awk BEGIN {FS = ":"; print "Name \ tUserID \ tGroupID \ tHomeDirectory"; } {print $ 1 "\ t" $ 3 "\ t" $ 4 "\ t" $ 6; } END {print NR, "Обработано записей"; } $ awk -f etc_passwd.awk / etc / passwd Имя UserID GroupID HomeDirectory gnats 41 41 / var / lib / gnats libuuid 100 101 / var / lib / libuuid syslog 101 102 / home / syslog hplip 103 7 / var / run / hplip avahi 105 111 / var / run / avahi-daemon saned 110 116 / home / saned Pulse 111 117 / var / run / pulse gdm 112 119 / var / lib / gdm 8 Обработано записей

2. Пример Awk OFS: переменная разделителя выходного поля

Awk OFS - это выходной эквивалент переменной awk FS. По умолчанию awk OFS - это один пробел. Ниже приведен пример awk OFS.

$ awk -F ':' '{print $ 3, $ 4;}' / etc / passwd 41 41 100 101 101 102 103 7 105 111 110 116 111 117 112 119

Конкатенатор в операторе печати «,» объединяет два параметра с пробелом, который по умолчанию является значением awk OFS. Таким образом, значение Awk OFS будет вставлено между полями в выводе, как показано ниже.

$ awk -F ':' 'BEGIN {OFS = "=";} {print $ 3, $ 4;}' / etc / passwd 41 = 41 100 = 101 101 = 102 103 = 7 105 = 111 110 = 116 111 = 117 112 = 119

3. Пример Awk RS: переменная разделителя записей

Awk RS определяет линию. Awk читает построчно по умолчанию.

Давайте предположим, что оценки учеников хранятся в файле, каждая запись разделяется двойной новой строкой, а каждое поле разделяется символом новой строки.

$ cat student.txt Джонс 2143 78 84 77 Gondrol 2321 56 58 45 RinRao 2122 38 37 65 Эдвин 2537 78 67 45 Даян 2415 30 47 20

Теперь приведенный ниже скрипт Awk выводит имя студента и Rollno из указанного выше входного файла.

$ cat student.awk BEGIN {RS = "\ n \ n"; FS = "\ п"; } {print $ 1, $ 2; } $ awk -f student.awk student.txt Джонс 2143 Гондрол 2321 РинРао 2122 Эдвин 2537 Даян 2415

В скрипте student.awk каждая деталь учащегося читается как отдельная запись, поскольку awk RS был назначен для двойного символа новой строки, а каждая строка в записи является полем, поскольку FS - символ новой строки.

4. Пример Awk ORS: переменная разделителя выходных записей

Awk ORS является выходным эквивалентом RS. Каждая запись в выводе будет напечатана с этим разделителем. Ниже приведен пример ORK для awk:

$ awk 'BEGIN {ORS = "=";} {print;}' оценки учеников Джонс 2143 78 84 77 = Gondrol 2321 56 58 45 = RinRao 2122 38 37 65 = Эдвин 2537 78 67 45 = Даян 2415 30 47 20 =

В приведенном выше сценарии каждая запись в файле меток учеников ограничивается символом «=».

5. Awk NR Пример: переменная количества записей

Awk NR дает вам общее количество обрабатываемых записей или номер строки. В следующем примере awk NR переменная NR имеет номер строки, в разделе END awk NR сообщает вам общее количество записей в файле.

$ awk '{print "Обработка записи -", NR;} END {print NR, "Записи студента обрабатываются";}' Запись обработки студентами - 1 Запись обработки - 2 Запись обработки - 3 Запись обработки - 4 Запись обработки - 5 5 Студенческие записи обрабатываются

6. Пример Awk NF: количество полей в записи

Awk NF дает вам общее количество полей в записи. Awk NF будет очень полезен для проверки наличия всех полей в записи.

Давайте возьмем в файл оценок учеников, для учеников отсутствует оценка Test3, как показано ниже.

$ cat студент-отметки Джонс 2143 78 84 77 Gondrol 2321 56 58 45 RinRao 2122 38 37 Эдвин 2537 78 67 45 Даян 2415 30 47

Следующий скрипт Awk печатает номер записи (строки) и количество полей в этой записи. Так что будет очень легко узнать, что оценка Test3 отсутствует.

$ awk '{print NR, "->", NF}' оценки учеников 1 -> 5 2 -> 5 3 -> 4 4 -> 5 5 -> 4

7. Awk FILENAME Пример: имя текущего входного файла

Переменная FILENAME дает имя читаемого файла. Awk может принять количество входных файлов для обработки.

$ awk '{print FILENAME}' отметки учащихся отметки учащихся отметки учащихся отметки учащихся отметки учащихся

В приведенном выше примере он печатает FILENAME, т. Е. Оценки учеников, для каждой записи входного файла.

8. Пример Awk FNR: количество записей относительно текущего входного файла

Когда awk читает данные из нескольких входных файлов, переменная awk NR выдаст общее количество записей относительно всего входного файла. Awk FNR выдаст вам количество записей для каждого входного файла.

$ awk '{print FILENAME, FNR;}' книга оценок учеников 1 оценка учеников 1 оценки учеников 2 оценки учеников 3 оценки учеников 4 оценки учеников 5 книг подробно 1 книга подробно 2 книги подробно 3 книги подробно 4 книги подробно 5 книг 5

В приведенном выше примере вместо awk FNR, если вы используете awk NR, для файла bookdetails вы получите от 6 до 10 для каждой записи.

Рекомендуемое чтение

Sed and Awk 101 Hacks   Рамеш Натараджан Sed and Awk 101 Hacks Рамеш Натараджан . Я провожу несколько часов в день в среде UNIX / Linux, работая с текстовыми файлами (данными, файлами конфигурации и журналами). Я использую Sed и Awk для всей моей работы с текстом. Основываясь на своем опыте Sed и Awk, я написал электронную книгу Sed and Awk 101 Hacks, в которой содержится 101 практический пример различных расширенных функций Sed и Awk, которые улучшат вашу жизнь в UNIX / Linux. Даже если вы уже несколько лет используете Sed и Awk и не читали эту книгу, сделайте себе одолжение и прочитайте эту книгу. Вы будете поражены возможностями утилит Sed и Awk.

Если вам понравилась эта статья, вам также может понравиться ..



Похожие

Почему поляки редко используют IKE и IKZE?
Несмотря на постепенный рост популярности, учетные записи IKE и IKZE по-прежнему редкость среди поляков. На конец 2018 года общее количество таких счетов составило чуть более 1,7 млн., Из которых только 0,57 млн. Было сделано с начала года. Это означает, что менее одного из шестидесяти граждан нашей страны активно экономят на своем пенсионном счете. Анализ данных, предоставленных Управлением финансового надзора Польши, показывает двойственную картину. С одной стороны, мы наблюдаем растущий
Добавление карт в приложение Android с помощью сервисов Google Play
В прошлом путешествие в новое или незнакомое место обычно требовало, чтобы вы носили с собой местную карту и / или спрашивали у местных жителей указания. Заблудиться становится делом прошлого, так как мы можем удобно носить в наших карманах карту не только всей планеты, но и карту, которая покажет вам, где вы находитесь, укажет направление, куда вы хотите отправиться, предполагаемое время потребуется, чтобы добраться туда, позволит вам отмечать достопримечательности и сохранять их для дальнейшего
Steam Store Country - Биллинг - База знаний - Поддержка Steam
Ваш регион магазина устанавливается в зависимости от места вашей первой покупки в Steam. Ваш регион можно найти под Детали учетной записи видно ниже. Во время путешествия магазин Steam покажет цены в вашем регионе, и вы сможете совершать покупки, как и дома. Что если я перееду и захочу
получать вещи в свою библиотеку [Документация Zotero]
Переводы этой страницы: На этой странице описаны различные способы добавления элементов (например, книг, журнальных статей, веб-страниц и т. Д.) В качестве элементов в Zotero. Чтобы узнать больше о добавлении файлов (таких как PDF-файлы или изображения), см. файлы стр. Через ваш веб-браузер Для правильного использования Zotero вам необходимо установить Zotero Connector для Chrome, Firefox или
Запуск Hadoop в Ubuntu Linux (одноузловой кластер)
... пример, загрузка двоичного пакета из Oracle ), а затем перейдите к следующему разделу руководства. # Добавьте репозиторий Ferramosca Roberto в свои репозитории apt # См. Https://launchpad.net/~ferramroberto/ # $ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa: ferramroberto / java # Обновите список исходных текстов $ sudo apt-get update # Установить Sun Java 6 JDK $ sudo apt-get установить
Что такое Automap.exe и как его исправить?
Скачать сейчас Pixmac. 2018 - Сканировать ваш компьютер на наличие ошибок реестра в automap.exe Совместим с Windows 2000, XP, Vista, 7, 8 и 10 Установить дополнительные продукты - DLL (Solvusoft) | EULA | Политика конфиденциальности |
Как добиться успеха в торговле бинарными опционами дома 2019
Добро пожаловать в крупнейший экспертный справочник по бинарным опционам и бинарной торговле онлайн. BinaryOptions.net обучает трейдеров во всем мире с 2011 года, и все наши статьи написаны профессионалами, которые зарабатывают на жизнь в финансовой индустрии. У нас есть около тысячи статей и обзоров, которые помогут вам стать более прибыльным трейдером в 2019 году, независимо от вашего текущего уровня опыта. Если вы хотите обсудить торговлю или брокеров с другими трейдерами,
Exe и как его исправить?