Поиск по сайту:

Как разобрать файл с разделителями табуляцией с помощью `awk`


`tab` используется в качестве разделителя в файле с разделителями табуляции. Этот тип текстового файла создан для хранения различных типов текстовых данных в структурированном формате. В Linux существуют различные типы команд для анализа файлов этого типа. Команда `awk` — это один из способов разобрать файл с разделителями табуляции различными способами. В этом руководстве показано использование команды `awk` для чтения файла с разделителями табуляцией.

Создайте файл с разделителями табуляцией:

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

users.txt

Name                Email                        Username               Password

Md. Robin          robin@gmail.com               robin89                563425

Nila Hasan         nila@gmail.com                nila78                 245667

Mirza Abbas        mirza@gmail.com               mirza23                534788

Aornob Hasan       aornob@gmail.com              arnob45                778473

Nuhas Ahsan        nuhas@gmail.com               nuhas34                563452

Пример 1: печать второго столбца файла с разделителями табуляцией с помощью параметра -F

Следующая команда `sed` напечатает второй столбец текстового файла с разделителями табуляцией. Здесь параметр ‘-F’ используется для определения разделителя полей файла.

$ cat users.txt

$ awk -F '\t' '{print $2}' users.txt

Пример 2: Печать первого столбца файла с разделителями табуляцией с использованием переменной FS

Следующая команда `sed` напечатает первый столбец текстового файла с разделителями табуляцией. Здесь переменная FS ( Field Separator) используется для определения разделителя полей файла.

$ cat users.txt

$ awk '{ print $1 }' FS='\t' users.txt

Пример 3: печать третьего столбца файла с разделителями табуляцией с форматированием

Следующая команда `sed` напечатает третий столбец текстового файла с разделителями табуляции с форматированием, используя переменную FS  и printf. Здесь переменная FS  используется для определения разделителя полей файла.

$ cat users.txt

$ awk 'BEGIN{FS="\t"} {printf "%10s\n", $3}' users.txt

После выполнения команд появится следующий вывод. Третий столбец файла содержит напечатанное здесь имя пользователя.

Пример 4. Распечатайте третий и четвертый столбцы файла с разделителями табуляцией с помощью OFS.

OFS (разделитель полей вывода) используется для добавления разделителя полей в вывод. Следующая команда `awk` разделит содержимое файла на основе разделителя табуляции (\t) и напечатает 3-й и 4-й столбцы, используя табуляцию (\t) в качестве разделителя.

$ cat users.txt

$ awk -F "\t" 'OFS="\t" {print $3, $4 > ("output.txt")}' users.txt

$ cat output.txt

Следующий вывод появится после выполнения вышеуказанных команд. 3-й и 4-й столбцы содержат имя пользователя и пароль, которые были напечатаны здесь.

Пример 5: Замените конкретное содержимое файла с разделителями табуляцией

Функция sub() используется в команде `awk для подстановки. Следующая команда `awk` будет искать число 45 и заменять его числом 90, если искомое число существует в файле. После замены содержимое файла будет сохранено в файле output.txt.

$ cat users.txt

$ awk  -F "\t"'{sub(/45/,90);print}' users.txt > output.txt

$ cat output.txt

Пример 6: Добавить строку в начале каждой строки файла с разделителями табуляцией

Далее команда awk с параметром «-F» используется для разделения содержимого файла на основе табуляции (\t). OFS использовала для добавления запятой (,) в качестве разделителя полей в выводе. Функция sub() используется для добавления строки «—→» в начале каждой строки вывода.

$ cat users.txt

$ awk -F "\t" '{{OFS=","};sub(/^/, "---->");print $1,$2,$3}' users.txt

Пример 7: Замените значение файла с разделителями табуляцией с помощью функции gsub()

Функция gsub() используется в команде awk для глобальной подстановки. Все строковые значения файла будут заменены там, где совпадает шаблон поиска. Основное различие между функциями sub() и gsub() заключается в том, что функция sub() останавливает задачу замены после нахождения первого совпадения, а функция gsub() ищет шаблон в конце файла для замены. Следующая команда awk выполнит глобальный поиск слова «nila» и «Mira» в файле и заменит все вхождения текстом «Invalid Name», где искомое слово совпадает.

$ cat users.txt

$ awk  -F ‘\t’ '{gsub(/nila|Mira/, "Invalid Name"); print}' users.txt

Следующий вывод появится после выполнения вышеуказанных команд. Слово «nila» встречается два раза в 3-й строке файла, которое было заменено словом «Invalid Name» в выходных данных.

Пример 8: Печать форматированного содержимого из файла с разделителями табуляцией

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

$ cat users.txt

$ awk -F '\t' '{printf "%s(%s)\n", $1,$2}' users.txt

Заключение

Любой файл с разделителями табуляции можно легко проанализировать и распечатать с другим разделителем с помощью команды `awk`. Способы анализа файлов с разделителями табуляции и печати в различных форматах показаны в этом руководстве на нескольких примерах. В этом руководстве также объясняется использование функций sub() и gsub() в команде awk для замены содержимого файла с разделителями табуляции. Я надеюсь, что это руководство поможет читателям легко разобрать файл с разделителями табуляцией после того, как они правильно попрактикуются в примерах из этого руководства.

Статьи по данной тематике: