Команда column в linux

Обновлено: 04.07.2024

Команда Linux Column работает с текстовыми файлами с разделителями

Вы можете отобразить файл с разделителями в терминале Linux, чтобы каждый элемент с разделителями отображался в своем собственном столбце. Например, вот пример таблицы футбольной премьер-лиги Англии, в которой в качестве разделителей используются трубы.

В этот список входят 10 лучших команд, их названия, количество игр, в которых они играли, и набранные очки.

Существует ряд команд Linux, которые вы можете использовать для отображения данных в командной строке. Например, команда cat отображает файл в точности так, как он отображается в файле. Команда tail может использоваться для показа части файла или всего файла, как и команда head . Однако ни одна из этих команд не отображает вывод таким образом, чтобы он выглядел хорошо.

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

Основное использование команды Column

Вы можете запустить команду столбца без каких-либо параметров следующим образом:

Это лучше всего работает с файлами слов с пробелами между словами. это не работает так же хорошо с табличными данными, как в этом примере таблицы лиги.

pos | team | pld | pts 2 | tottenham | 31 | 61 4 | man city | 30 | 51 6 | man utd | 30 | 50 8 | Сток Сити | 31 | 46 10 | Челси | 30 | 41 1 | Лестер | 31 | 66 3 | Арсенал | 30 | 55 5 | Вест Хэм | 30 | 50 7 | Саутгемптон | 31 | 47 9 | Ливерпуль | 29 | 44

Указание ширины столбца

Если вы знаете ширину столбцов, вы можете использовать следующую команду для разделения столбцов по ширине:

Например, если вы знаете, что ширина каждого столбца составляет 20 символов, вы можете использовать следующую команду:

В случае таблицы лиги это не работает хорошо, если все столбцы определенной ширины. Чтобы доказать это, измените файл таблицы лиги следующим образом:

Теперь с помощью следующей команды вы можете получить приличный вывод:

Проблема заключается в том, что данные в файле уже выглядят хорошо, поэтому команды tail, head, nano или cat могут отображать одну и ту же информацию приемлемым способом.

Указание разделителей с помощью команды Column

Лучший способ использовать команду столбца для файлов с запятой, канала или других файлов с разделителями заключается в следующем:

Выходные разделители

До сих пор этот пример показал, как работать с разделителем входного файла, но как быть с данными, когда они отображаются на экране.

По умолчанию в Linux используется два пробела, но, возможно, вы захотите использовать вместо них два двоеточия. Следующая команда показывает, как указать разделитель вывода:

При использовании с файлом таблицы лиги команда выдает следующий вывод:

Заполнить строки перед столбцами

Есть еще один переключатель, который не особенно полезен, но включен сюда для полноты картины. Ключ -x при использовании с ключом -c заполняет строки перед столбцами.

Так что это значит? Посмотрите на следующий пример:

Вывод этого будет следующим:

pos | team | pld | pts 3 | arsenal | 30 | 55 6 | man utd | 30 | 50 9 | Ливерпуль | 29 | 44 1 | leicester | 31 | 66 4 | man city | 30 | 51 7 | Саутгемптон | 31 | 47 10 | Челси | 30 | 41 2 | Тоттенхэм | 31 | 61 5 | Вест Хэм | 30 | 50 8 | Сток Сити | 31 | 46

Как вы можете видеть, сначала идет вниз, а затем поперек.

Теперь посмотрим на этот пример:

На этот раз вывод выглядит следующим образом:

pos | team | pld | pts 1 | leicester | 31 | 66 2 | tottenham | 31 | 61 3 | арсенал | 30 | 55 4 | man city | 30 | 51 5 | west ham | 30 | 50 6 | man Юнайтед | 30 | 50 7 | Саутгемптон | 31 | 47 8 | Сток Сити | 31 | 46 9 | Ливерпуль | 29 | 44 10 | Челси | 30 | 41

Favorite

Добавить в избранное (1 оценок, среднее: 5,00 из 5)

Как улучшить время запуска приложений в Linux

Другими словами, если вам интересно, где именно находится определенная программа, просто используйте which. Команда Linux имеет простой синтаксис:

Давайте посмотрим, как использовать эту простую, но полезную команду.

Linux, Примеры команды which

Допустим, вы хотите знать, где находится исполняемый файл Java, используйте команду:

Вывод может быть таким:

$ which java
/usr/bin/java

Обратите внимание, что работает только с исполняемыми файлами. Таким образом, вы должны использовать which только с аргументом. Например, вы устанавливаете Java с помощью пакета JDK, но не запускаете команду с именем «jdk», вы запускаете «java». Таким образом, вы используете команду which на Java, а не JDK.

Если команда which не находит исполняемый файл в текущем пути, она ничего не возвращает.

Использование команды which с несколькими исполняемыми файлами

Вы можете предоставить более одного аргумента для команды which:

Вывод для нас был такой:

$ which man java python nada
/usr/bin/man
/usr/bin/java
/usr/bin/python

Вы заметили что-то здесь? Мы дали ему четыре аргумента, но результат отображается только для трех из них. Это потому, что «nada» не исполняемый файл. Там нет вывода для which.

Показать все пути с командой which

Команда which в Linux имеет только одну опцию -a. По умолчанию эта команда печатает только один путь для своих аргументов.

Если программа имеет исполняемый файл в двух местах, например, в /usr/bin/program и в /usr/local/bin/program, вы можете отобразить оба пути с помощью опции -a.

Статус вывода команды which

Если вы используете команду which в скрипте bash, вам может потребоваться узнать ее состояние завершения.

Команда which имеет следующий статус выхода:

Это все, что вам нужно знать о команде which в Linux. Если у вас есть вопросы или предложения, дайте нам знать в комментариях ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Have you ever been in a situation to work with CSV files and produce output in structured tabular format? Recently I was working with data cleansing on a file that is not in a proper structure. It has so many whitespaces between each column and I have to convert it to CSV format to push to the database. After cleaning and creating the output in CSV format, my output is not visually appealing to verify data integrity in the CSV file. This is the time the “Column” command comes in handy to me.

According to manpage, the column command “columnate lists”. In simple words, the column is a simple utility that can format your output into a column format (rows and fields) based on the structure of your source file. The column command is part of the util-linux package.

An important point to note here is column command behaves differently in Debian-based and Rhel-based distros. The reason is Debian-based distro uses “column” from bsdmainutils instead of util-linux. The upstream version of the column command is newer than the bsdmainutils package. Take a look at the bug report to know more about this.

Which Column

For demonstration purposes, I am using CentOS 7 and will show different options between Ubuntu and CentOS 7. To check the column version run the following command. This command will also show the util-linux package version.

You can also check the version of util-linux by running the below commands.

Before using the column command a good place to start will be the man page and explore its options.

List File Content in Tabular Format

The column command can create a table by passing the filename as an argument along with the -t flag. I am using /etc/passwd as the input file.

List File Contents in Table Format

Looking at the above image, you may think this is not what we expected and the output may look weird. Yes! You are right. Columns consider space as the default delimiter when creating a table. This behavior can be overridden by passing a custom delimiter.

Custom Delimeter

Custom delimiters give you a wide range of options to work with. To create a custom delimiter use -s flag followed by a delimiter. Now we will use “:” as a delimiter to split /etc/passwd file.

Delimiter

Look at the above image where the table is nicely formatted and structured. From util-linux version 2.23 option -s has been changed to not be greedy.

Now run the same command in Ubuntu and the result will be greedy. This is because column command (bsdmainutils) on Ubuntu will treat multiple adjacent words as a single word.

Greedy Output

To overcome this behavior use -n flag.

Non Greedy Output

Ignore White Empty Lines in File Output

When you have blank lines in your input file, the column command by default ignores it. See my input file which is in CSV format and I added a blank line between every line. Now let’s create a table as we did before with this input file.

Ignore Empty While Lines

From the above image you can see my input file dummy.txt has empty lines and when I try to create a table, empty lines are ignored.

File White Lines

From the above image, you can see the table is formatted properly and the empty lines are not ignored.

File Output Separator

By default, two white spaces will be used as output separators. This behavior can be overridden by passing -o flag. You will not have an output separator option available in the column (bsdmainutils).

File Output Seperator

Convert File Rows into Columns

Using the -x the flag you can convert rows into columns. This behavior is the same in both the rhel and ubuntu variants of the column command. This is a very useful feature when you have to grab a certain field through the awk or column command then convert it to the header for your CSV file.

Convert File Rows to Columns

When you run the column command without using any flags the behavior will be the same as passing -x flag.

Find Column Size

The column uses an environmental variable ($COLUMNS) to find out the size of your terminal and based on the size use the echo command, table size will be displayed in the terminal.

Take a look at the image below. Initially, I resized my terminal to have $COLUMNS the size set to 60 and ran the column command. Again I resized my terminal to have $COLUMNS the size set to 114 and ran the column command again. You can see the difference in how the column prints the table when we resize the terminal.

Resize Column Sizes

That’s it for this article. If you have any feedback please provide it in the comment section.

If you liked this article, then do subscribe to email alerts for Linux tutorials. If you have any questions or doubts? do ask for help in the comments section.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

Related Posts

Monitor Per Process Bandwidth in Linux

Linux echo Commands

Linux ls Command

Find Which Process Using Port in Linux

Linux Top Command Examples and Usage

Check Hardware and System Information in Linux

2 thoughts on “Different Ways to Use Column Command in Linux”

On Ubuntu 20.10, when I run column --version , I get column from util-linux 2.36.

I have not tested it out on Ubuntu 20.10. But I have tested it on Ubuntu 20.04.

Got something to say? Join the discussion. Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Как создать пользовательские команды в Linux

(1 оценок, среднее: 5,00 из 5)
В этой статье мы покажем вам, как создавать пользовательские команды в Linux, которые позволят вам создавать команды «быстрого доступа» с использованием простого имени по вашему выбору. Еще лучше, вы можете объединить несколько команд, подобных этому, и запустить их все одним словом. Полезно, правда? По мере того, как вы все больше знакомы с Linux, вы столкнетесь с командами на форумах и учебниках, которые могут быть очень сложными (и странными). Рассмотрим следующий пример, чтобы распечатать список файлов в одном столбце:

Это дает нам следующий результат:

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

Все идет нормально. Но что, если вы хотите часто использовать эту команду? Трудно запомнить это письмо для письма, его нелегко напечатать, и он слишком длительный. Теперь добавьте десятки других команд с похожими (или большими) уровнями сложности, и легко увидеть, что нам нужно новое решение.

Шаг 1. Откройте файл в текстовом редакторе с помощью имени files

Предположим, мы хотим назвать нашу новую команду «files». Мы создаем новый файл с именем «files», используя текстовый редактор «vi», указав следующую команду:

Эта команда откроет базовый редактор, в котором вы можете ввести текст. По умолчанию он будет находиться в режиме «чтения», и вы не сможете добавить новый текст. Измените это, чтобы вставить режим, нажав клавишу «Вставить» на клавиатуре.

Теперь скопируйте и вставьте следующий текст. Вы можете быстро вставить его в терминал, щелкнув его правой кнопкой мыши.

Как вы можете видеть, это вставляется в vi, когда включен режим «INSERT»:


Это называется «скриптом», и он состоит из трех частей:

Теперь выйдите из режима «Вставки», нажав клавишу «Esc». Сохраните файл, нажав Shift + Z + Z (Удерживая клавишу shift, нажмите «z» два раза).

Теперь файл сохранится в текущей папке. Вы можете отобразить его содержимое, введя:

Это дает следующий результат:


Шаг 2: Назначьте правильные разрешения для нашего скрипта

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


Однако это обычный файл, а не тот, который может быть выполнен. Команда «ls» отображает исполняемые файлы зеленым цветом. Поэтому нам нужно сообщить Linux, что наш новый файл является исполняемым. Мы делаем это, введя следующее:

Это изменяет права доступа к файлам и делает их исполняемыми. Теперь «ls» показывает файл как зеленый:


Пришло время запустить нашу команду!

Шаг 3: Указание путей к нашему скрипту


Это связано с тем, что Linux ищет регулярные команды в определенном наборе каталогов, на которые ссылается переменная $PATH. И наш текущий каталог отсутствует в этом списке.

Итак, у нас есть три варианта:

  1. Вручную укажите полное местоположение нашего файла сценария каждый раз
  2. Добавьте «текущий каталог» в переменную $PATH
  3. Переместите наш файл сценария в существующую папку, на которую ссылается $PATH

Давайте посмотрим, как сделать все три:

Способ 1. Вручную укажите полное местоположение

И это работает, как вы можете видеть ниже:


К сожалению, это не сработает, если мы будем в другой папке. Мы должны указать полный путь, который является болью.

Способ 2. Добавить «Текущий каталог» в переменную PATH

Этот метод имеет ту же проблему, что и первая. Мы можем сказать, что Linux всегда ищет «текущий каталог» для скриптов и команд. Таким образом, нам не придется использовать «./». Мы можем временно добавить текущий каталог в $ PATH следующим образом:

Теперь просто набрав «файлы», как показано здесь:


Однако этот подход имеет две проблемы:

  1. Как уже упоминалось, вы не можете получить доступ к сценарию из любого другого каталога, кроме своего собственного
  2. Изменение в $PATH является временным. Он будет сброшен, когда сеанс пользователя закончен!

Чтобы изменения в $PATH были постоянными, нам необходимо отредактировать этот файл:

Как и раньше, мы можем использовать редактор vi:

Снова нажмите «Вставить», чтобы перейти в режим INSERT, и перейдите к строке с указанием переменной PATH, как показано ниже:


Теперь добавьте следующее в конец строки PATH:

Это двоеточие (:), за которым следует точка (.). Сохраните файл в vi, нажав «Esc» и Shift + z + z, как раньше. Однако изменения не вступят в силу до перезагрузки

/.bash_profile. Сделайте это, используя следующую команду:

Вы можете проверить, произошли ли изменения, вызвав переменную $PATH. Вы должны увидеть дополнение в конце строки следующим образом:


Теперь изменение сохранится даже после завершения сеанса пользователя. Однако вы все равно не можете выполнить команду из любой папки. Для этого нам нужен метод 3.

Способ 3: добавьте файл в существующий пункт назначения $PATH (рекомендуется)

На мой взгляд, это лучший способ добавить вашу пользовательскую команду, чтобы вы могли получить к ней доступ из любого места.

Во-первых, получите список местоположений $PATH с помощью echo $PATH, как показано в методе 2.

Каждое расположение папки разделяется двоеточием (:) Вы можете видеть на скриншоте выше, что папка /usr/local/bin является одним из путей.


Поэтому мы просто переместим нашу пользовательскую команду в это место (или любую другую папку в $PATH) с помощью этой команды:

И теперь мы можем изменить нашу рабочую папку и получить доступ к скрипту из любой точки!


На этом скриншоте я переместил сценарий в /usr/local/bin и переместил одну папку на «cd ..». И команда все еще работает!

Это правильный способ создания пользовательских команд в Linux. Это всего лишь верхушка айсберга, когда дело доходит до сценариев в Linux. Вы можете писать сложные логические контуры и выполнять условные операторы. Вы также можете использовать это для создания псевдонимов для существующих команд или объединить их вместе для автоматического выполнения! Если это ваш первый набег на Linux-скрипты, будьте готовы получить доступ к богатству мощности и функциональности в будущем.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: