Как разобрать файл с разделителями табуляцией с помощью `awk`
`tab` используется в качестве разделителя в файле с разделителями табуляции. Этот тип текстового файла создан для хранения различных типов текстовых данных в структурированном формате. В Linux существуют различные типы команд для анализа файлов этого типа. Команда `awk` — это один из способов разобрать файл с разделителями табуляции различными способами. В этом руководстве показано использование команды `awk` для чтения файла с разделителями табуляцией.
Создайте файл с разделителями табуляцией:
Создайте текстовый файл с именем users.txt со следующим содержимым, чтобы протестировать команды из этого руководства. Этот файл содержит имя пользователя, адрес электронной почты, имя пользователя и пароль.
users.txt
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’ используется для определения разделителя полей файла.
$ awk -F '\t' '{print $2}' users.txt
Пример 2: Печать первого столбца файла с разделителями табуляцией с использованием переменной FS
Следующая команда `sed` напечатает первый столбец текстового файла с разделителями табуляцией. Здесь переменная FS ( Field Separator) используется для определения разделителя полей файла.
$ awk '{ print $1 }' FS='\t' users.txt
Пример 3: печать третьего столбца файла с разделителями табуляцией с форматированием
Следующая команда `sed` напечатает третий столбец текстового файла с разделителями табуляции с форматированием, используя переменную FS и printf. Здесь переменная FS используется для определения разделителя полей файла.
$ awk 'BEGIN{FS="\t"} {printf "%10s\n", $3}' users.txt
После выполнения команд появится следующий вывод. Третий столбец файла содержит напечатанное здесь имя пользователя.
Пример 4. Распечатайте третий и четвертый столбцы файла с разделителями табуляцией с помощью OFS.
OFS (разделитель полей вывода) используется для добавления разделителя полей в вывод. Следующая команда `awk` разделит содержимое файла на основе разделителя табуляции (\t) и напечатает 3-й и 4-й столбцы, используя табуляцию (\t) в качестве разделителя.
$ 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.
$ awk -F "\t"'{sub(/45/,90);print}' users.txt > output.txt
$ cat output.txt
Пример 6: Добавить строку в начале каждой строки файла с разделителями табуляцией
Далее команда awk с параметром «-F» используется для разделения содержимого файла на основе табуляции (\t). OFS использовала для добавления запятой (,) в качестве разделителя полей в выводе. Функция sub() используется для добавления строки «—→» в начале каждой строки вывода.
$ awk -F "\t" '{{OFS=","};sub(/^/, "---->");print $1,$2,$3}' users.txt
Пример 7: Замените значение файла с разделителями табуляцией с помощью функции gsub()
Функция gsub() используется в команде awk для глобальной подстановки. Все строковые значения файла будут заменены там, где совпадает шаблон поиска. Основное различие между функциями sub() и gsub() заключается в том, что функция sub() останавливает задачу замены после нахождения первого совпадения, а функция gsub() ищет шаблон в конце файла для замены. Следующая команда awk выполнит глобальный поиск слова «nila» и «Mira» в файле и заменит все вхождения текстом «Invalid Name», где искомое слово совпадает.
$ awk -F ‘\t’ '{gsub(/nila|Mira/, "Invalid Name"); print}' users.txt
Следующий вывод появится после выполнения вышеуказанных команд. Слово «nila» встречается два раза в 3-й строке файла, которое было заменено словом «Invalid Name» в выходных данных.
Пример 8: Печать форматированного содержимого из файла с разделителями табуляцией
Следующая команда `awk` напечатает первый и второй столбцы файла с форматированием, используя printf. Вывод покажет имя пользователя, заключив адрес электронной почты в скобки.
$ awk -F '\t' '{printf "%s(%s)\n", $1,$2}' users.txt
Заключение
Любой файл с разделителями табуляции можно легко проанализировать и распечатать с другим разделителем с помощью команды `awk`. Способы анализа файлов с разделителями табуляции и печати в различных форматах показаны в этом руководстве на нескольких примерах. В этом руководстве также объясняется использование функций sub() и gsub() в команде awk для замены содержимого файла с разделителями табуляции. Я надеюсь, что это руководство поможет читателям легко разобрать файл с разделителями табуляцией после того, как они правильно попрактикуются в примерах из этого руководства.