2016-11-02 2 views
0

Я пытаюсь создать сценарий, который берет данные благодаря запросу http, а затем печатает некоторую информацию, разделенную на два столбца. Например:Табуляция в скрипте bash

abcde   | 123 
fghijkl   | 4567 
mnopqrstuvwxyz   | foo 

Как вы можете видеть, даже при подведении он не работает, как я ожидал ...

Кто-нибудь есть идея, чтобы решить это?

Благодаря авансовым,

ответ

2

Вы можете использовать это:

cat file | column -t -s' ' 

abcde   | 123 
fghijkl   | 4567 
mnopqrstuvwxyz | foo 

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

  • -s Задает разделитель (может быть установлен для символов).
  • -t Определите количество столбцов, которые содержит вход, и создайте таблицу. Столбцы разделены пробелами по умолчанию или с символами, указанными с помощью опции -s. Полезно для красивой печати.

Если вы вводите doesnt содержит разделители (в данном случае «|»), вы можете использовать следующее для вставки желаемого разделителя.

cat file | sed 's//| /' | column -t -s' ' 

В приведенных выше sed им замещающих едином пространстве с "|" , sed является соответствие первого пространства и соответствует только одно месту на линию по умолчанию.

+1

Похоже, он также хотел бы использовать «-o» | " – Aaron

+0

Спасибо за вход Arron, Отредактированный ответ. если у вас есть лучший способ добавить разделитель, пожалуйста, поделитесь, чтобы улучшить ответ. –

+0

Я не думаю, что вам нужно какое-то 'sed' там, я просто имел в виду, что OP хотел, чтобы трубы отображались на выходе. Если это так, вам нужно указать '-o' независимо от того, находятся ли они на входе (разделитель заменяется разделителем вывода, по умолчанию это два пробела). Вход ДОЛЖЕН содержать разделитель, так что 'column' может работать над ним (однако это может быть одно пространство, не нужно заменять его чем-то другим) – Aaron

Смежные вопросы