Преобразование строк в столбцы

Думаю, тут недоразумение. Независимо от того, работают ли zip-программы или нет, зависит от того, установлен ли он на сервере, а не от программы, которую вы используете для ssh на сервер (это может быть PuTTY, SSH Tectia или что-то еще).

Хотя это маловероятно, возможно, программа zip была удалена с сервера, и это объясняет, почему вы не можете ее найти. В этом случае вам нужно будет перенести исходные файлы на сервер, на котором установлен zip.

Более правдоподобное объяснение состоит в том, что вы неправильно вызываете программу zip . Набрав whereis zip , вы увидите его местоположение.

10
01.02.2016, 21:06
2 ответа

cat <(head -n 11 virtual.txt | cut -d: -f1) <(sed 's/.*: //' virtual.txt) | xargs -d '\n' -n 11 | column -t

Количество строк на виртуальную машину в этом случае жестко запрограммировано -11. Будет лучше заранее подсчитать его и сохранить в переменной, а затем использовать эту переменную в коде.

Пояснение

    Конструкция
  1. cat <(command 1) <(command 2)-<()делает вывод commandпохожим на временный файл. Поэтому catобъединяет два файла и передает их дальше.

    • Команда 1:head -n 11 virtual.txt | cut -d: -f1дает нам будущие заголовки столбцов. Одна запись виртуальной машины — это первые одиннадцать строк, для ее получения используется команда head. cutразбивает эту запись на два столбца и печатает только первый.
    • команда 2:sed 's/.*: //' virtual.txt-дает нам будущие значения столбца. sedудаляет весь ненужный текст и оставляет только значения.
  2. xargs -d '\n' -n 11. Каждый элемент ввода завершается символом новой строки. Эта команда получает элементы и печатает их по 11 в строке.

  3. column -t-нужен для красивых -печатных дисплеев. Он отображает наши строки в виде таблицы. В противном случае каждая строка будет разной ширины.

Выход

Virtual  Machine                           ID       Status  Memory  Uptime   Server             Pool         HA     Mode  VCPU  Type  OS
OL6U5    0004fb00000600003da8ce6948c441bb  Running  65536   17835   Minutes  MyOVS1.vmorld.com  HA-POOL      false  16    Xen   PVM   Oracle  Linux  6
OL6U6    0004fb00000600003da8ce6948c441bc  Running  65536   17565   Minutes  MyOVS2.vmorld.com  NON-HA-POOL  false  16    Xen   PVM   Oracle  Linux  6
OL6U7    0004fb00000600003da8ce6948c441bd  Running  65536   17835   Minutes  MyOVS1.vmorld.com  HA-POOL      false  16    Xen   PVM   Oracle  Linux  6
0
27.01.2020, 20:01

Используйте datamashи ее опцию transpose, чтобы поменять местами строки и столбцы в файле.

datamash -t: transpose < infile.txt

По умолчанию транспонирование проверяет, что ввод имеет одинаковое количество полей в каждой строке, в противном случае происходит сбой с ошибкой, и вы можете отключить его строгий режим, чтобы разрешить отсутствующие значения--no-strict

datamash -t: --no-strict transpose < infile.txt

Также вы можете использовать --fillerдля установки отсутствующего -значения заполнения поля:

datamash -t: --no-strict --filler " " transpose < infile.txt

получено изdatamash manual

0
27.01.2020, 20:01

Теги

Похожие вопросы