- Вывод нужных столбцов в консоле
- Отображение содержимого файла в формате столбца в Linux
- Команда Linux Column работает с текстовыми файлами с разделителями
- Основное использование команды Column
- Указание ширины столбца
- Указание разделителей с помощью команды Column
- Выходные разделители
- Заполнить строки перед столбцами
- Другие переключатели
- » Статьи » AWK вывод столбцов из файла в Linux
- AWK вывод столбцов из файла в Linux
- Печать Столбцов по Номерам с помощью AWK
- Изменить Разделитель Колонок в AWK
- Исключить Определенные Столбцы с помощью AWK
- Напечатать или Исключить Диапазон Столбцов с помощью AWK
- bash: разделить вывод команды по столбцам
- 10 ответов
- функции оболочки
- Решение Массиве
- Как отобразить только 1 столбец вывода команды ls?
Вывод нужных столбцов в консоле
Ребят подскажите, не могу сделать простое действие. Есть команда вывода всех контейнеров docker ps -a, но все колонки мне не нужны, да они и не умещаются на экран. А вот как вывести только нужные колонки? Вроде есть команды cut и awk. Но нижние колонки ломаются. К примеру docker ps -a | awk <‘print $6,$7,$8’>выводит нужные колонки, но внизу вся информация ломается, выводится какая то ахинея. Может кто подскажет?
Для справки по кейвордам читай ps(1).
Интересно было бы понять сам механизм, как можно выделить из большой таблицы только нужные столбцы. Это может в куча мест пригодиться. А вывод docker контейнеров это пример, на котором я тренируюсь. По сути awk <‘print $6,$7,$8’>работает, но только для первой строки. Остальные строки как то перемешиваются. И там выводится абы что.
Ещё раз повторяю: вывод ps не является таблицей! Это обычные строки.
По сути awk <‘print $6,$7,$8’>работает, но только для первой строки. Остальные строки как то перемешиваются.
Из-за разного количества слов в строке, из-за отсутствия форматирования (для awk любое количество пробелов, если не указано иного опцией -F , является разделителем ввода, вывод значений, разделённых запятой, разделяется одним пробелом).
Если в твоей ОС ps умеет в libxo, ты можешь формировать вывод в json и парсить его чем-нибудь типа jq (или библиотекой на любом удобном для тебя скриптовом языке вроде Python).
Вообще, не понятна задача.
Остальные строки как то перемешиваются. И там выводится абы что.
Ты хочешь вывести красиво нужные тебе столбцы в терминал? Если да, то ещё раз почитай man ps , в частности про опцию -o и её аргументы.
Если ты хочешь заскриптовать, то в первую очередь смотри в сторону libxo, если нет, то поиграйся с последовательностью выводимых данных, чтобы вывод не колбасило.
Большое спасибо за развёрнутый ответ! Теперь всё стало гораздо понятнее. Это то что нужно.
Подправить форматированную пробелами таблицу можно так:
Источник
Отображение содержимого файла в формате столбца в Linux
Команда 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
Лучший способ использовать команду столбца для файлов с запятой, канала или других файлов с разделителями заключается в следующем:
Ключ -s позволяет определить используемый разделитель. Например, если ваш файл разделен запятыми, вы можете поставить “,” после -s. Ключ -t отображает данные в табличном формате.
Выходные разделители
До сих пор этот пример показал, как работать с разделителем входного файла, но как быть с данными, когда они отображаются на экране.
По умолчанию в 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
Данные идут по экрану, а затем вниз.
Другие переключатели
Доступны только другие переключатели:
Здесь отображается версия колонки, установленной на вашем компьютере.
Это отображает страницу руководства к окну терминала.
Источник
» Статьи » AWK вывод столбцов из файла в Linux
|