Как использовать массив в команде awk

Переменная массива используется для хранения нескольких данных. Он поддерживается большинством языков программирования для хранения нескольких данных. Массив состоит из двух частей. Это ключ и ценность. Ключ используется для доступа к местоположению значения. Массив может быть числовым и ассоциативным. Числовой массив поддерживает только числовое значение в качестве ключа, а ассоциативный массив поддерживает как числовое, так и индексное значение в качестве ключа. Ассоциативный массив поддерживается командой awk. В этом руководстве на различных примерах показано, как определить, получить доступ или изменить ассоциативный массив в команде awk.

Синтаксис:

arrayName [Key] = Value

Имя, которое необходимо объявить для переменной массива. arrayName — это имя массива. Каждый массив должен использовать третью скобку для определения ключа или index , и это будет любое строковое значение для ассоциативного массива. Значение может быть любым символом, числом или строкой, которые будут храниться в конкретном индексе массива.

Пример-1: Определение и чтение одномерный массив в awk

Одномерный массив может хранить список данных одного столбца. Этот тип массива содержит один ключ и значение для каждого элемента массива. Этот массив можно использовать в команде awk, как и в других языках программирования. В этом примере массив с именем book объявлен с тремя элементами, а цикл for используется для чтения и печати каждого элемента. Выполните следующую команду из терминала.

$ echo | awk ‘BEGIN {book [«HTML»] = «Карманное руководство по HTML 2010»;
книга [«JS»] = «Эффективный JavaScript»;
книга [«CSS»] = «Обучение Интернету Дизайн «;}
END {for (i in book) print» Книга «, i,» is «, book [i];} ‘

Пример-2: Определение и чтение двумерного массива в awk

Двумерный массив используется для хранения списка табличных данных, содержащего фиксированное количество строк и столбцы. В этом примере объявлен двумерный массив с именем student, содержащий три элемента. Здесь идентификатор и имя студента используются как ключевые значения массива. Как и в предыдущем примере, в сценарии awk используется цикл for-in для печати значений массива. Запустите следующий сценарий из терминала.

$ echo | awk ‘НАЧАЛО {
студентов [«87462, Мохаммед Али»] = 87;
студентов [«98376, Сакиб Аль Хасан»] = 99;
студентов [«79937, Мусфикур Rahman «] = 88;
print» (ID, Name) => Marks «;
}
END {для (i в учащихся) print» («, i,» ) => «, студенты [i]; } ‘

Вывод:

Пример 3: Удаление элемента массива

Любое значение массива может быть удалено на основе значения ключа. Здесь в начале скрипта определен массив book с тремя элементами. Затем значение ключа HTML удаляется с помощью удалить . Значение элемента ключа HTML печатается до и после команды delete . Выполните следующую команду, чтобы проверить вывод.

$ echo | awk ‘BEGIN {book [«HTML»] = «Карманное руководство по HTML 2010»;
book [«JS»] = «Эффективный JavaScript «;
книга [» CSS «] =» Изучение веб-дизайна «;
print» Перед удалением — «, книга [» HTML «];
удалить книгу [» HTML » ];
print » nAfter Delete -«, book [«HTML»];} ‘

Вывод:

Вывод показывает, что значение индекса HTML пусто после выполнения команды delete .

Пример 4: чтение массива bash в awk

В предыдущих примерах массив объявлен в команде awk и повторяется циклом for-in. Но вы можете прочитать любой массив bash с помощью сценария awk. В этом примере массив bash с именем lang объявлен в первой команде. Во второй команде значения массива bash передаются в команду awk, которая сохраняет все элементы в массиве awk с именем awkArray. Значения массива awkArray печатаются с использованием цикла for . Выполните следующую команду из терминала, чтобы проверить вывод.

$ lang = («PHP» «ASP» «JSP» «C #» «C ++»)
$ printf ‘% s n’ «$ {lang [@]}» | awk ‘{awkArray [NR] = $ 1} END {для
(i в awkArray) print awkArray [i], » n»; } ‘

Пример 5: Чтение содержимого файла в массив awk

Содержимое любого файла можно прочитать с помощью массива awk. Создайте текстовый файл с именем bird.txt с содержанием, указанным ниже.

bird.txt

Коктейль
Перепел
Серый попугай
Баазигар

Следующий скрипт awk используется для чтения содержимое файла bird.txt и сохраняет значения в массиве, цикл awkArray. for используется для анализа массива и печати значений в терминале. Запустите следующий сценарий из терминала.

$ awk ‘{awkArray [counter ++] = $ 1; } END {for (n = 0; n print awkArray [n], » n»; } ‘bird.txt

Вывод:

Скрипт печатает содержимое bird .txt .

Пример 6: Удаление повторяющихся записей из файла

Сценарий awk можно использовать для удаления повторяющихся данных из любой текстовый файл. Создайте текстовый файл с именем fruit.txt со следующим содержанием. В файле есть два повторяющихся данных. Это Apple и Оранжевый .

fruit.txt

Apple
Апельсин
Виноград
Яблоко
Банан
Апельсин
Гуава

Следующий скрипт awk будет читать каждая строка из текстового файла, fruit.txt и проверьте, существует ли текущая строка в массиве, arr. Если строка существует в массиве, она не будет сохранять строку в массиве и не будет печатать значение в терминале. Таким образом, скрипт сохранит в массиве только уникальные строки из файла и распечатает. Выполните команды из терминала.

$ cat fruit.txt
$ awk ‘! ($ 0 в arr) {print arr [$ 0], $ 0;}’ fruit.txt

Первая напечатает содержимое файла, fruit.txt, а вторая команда напечатает содержимое из fruit.txt после исключения повторяющихся строк из файла.

Заключение:

В этом руководстве показаны различные варианты использования массива в сценарии awk на различных примерах с пояснениями. Доступ к массиву Bash и любому содержимому текстового файла также можно получить с помощью массива awk. Если вы новичок в программировании на awk, то это руководство поможет вам изучить использование массива awk на базовом уровне, и вы сможете правильно использовать массив в сценарии awk.

Оцените статью
nanomode.ru
Добавить комментарий