LINUX.ORG.RU

Вывод нужных столбцов в консоле

 


0

1

Ребят подскажите, не могу сделать простое действие. Есть команда вывода всех контейнеров docker ps -a, но все колонки мне не нужны, да они и не умещаются на экран. А вот как вывести только нужные колонки? Вроде есть команды cut и awk. Но нижние колонки ломаются. К примеру docker ps -a | awk {‘print $6,$7,$8’} выводит нужные колонки, но внизу вся информация ломается, выводится какая то ахинея. Может кто подскажет?



Последнее исправление: Andrei_IW (всего исправлений: 1)
Ответ на: комментарий от mord0d

Интересно было бы понять сам механизм, как можно выделить из большой таблицы только нужные столбцы. Это может в куча мест пригодиться. А вывод docker контейнеров это пример, на котором я тренируюсь. По сути awk {‘print $6,$7,$8’} работает, но только для первой строки. Остальные строки как то перемешиваются. И там выводится абы что.

Andrei_IW
() автор топика

так должно работать awk '{printf «%-10s %-10s %s\n», $6, $7, $8}'

andy03
()
Последнее исправление: andy03 (всего исправлений: 1)
Ответ на: комментарий от Andrei_IW

из большой таблицы

Ещё раз повторяю: вывод ps не является таблицей! Это обычные строки.

По сути awk {‘print $6,$7,$8’} работает, но только для первой строки. Остальные строки как то перемешиваются.

Из-за разного количества слов в строке, из-за отсутствия форматирования (для awk любое количество пробелов, если не указано иного опцией -F, является разделителем ввода, вывод значений, разделённых запятой, разделяется одним пробелом).

one  two  three  four  five       # для awk здесь 5 "столбцов"
one  two  three        five       # для awk здесь 4 "столбца"
one  two         four             # для awk здесь 3 "столбца"
one  two         four        six  # для awk здесь 4 "столбца"

Если в твоей ОС ps умеет в libxo, ты можешь формировать вывод в json и парсить его чем-нибудь типа jq (или библиотекой на любом удобном для тебя скриптовом языке вроде Python).

---

Вообще, не понятна задача.

Остальные строки как то перемешиваются. И там выводится абы что.

Ты хочешь вывести красиво нужные тебе столбцы в терминал? Если да, то ещё раз почитай man ps, в частности про опцию -o и её аргументы.

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

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Большое спасибо за развёрнутый ответ! Теперь всё стало гораздо понятнее. Это то что нужно.

Andrei_IW
() автор топика

Подправить форматированную пробелами таблицу можно так:

ps -a | awk '{print $6,$7,$8}' | column -t
legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.