выравнивание столбцов в bash

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
lgar
Сообщения: 118
ОС: Ubuntu

выравнивание столбцов в bash

Сообщение lgar »

Есть вывод, он очень кривой

Код: Выделить всё

а 1
в   2
д         3
з 4


Надо сделать

Код: Выделить всё

a 1
в 2
д 3
з 4


Есть команда printf, возможно, с ее помощью можно поставить пробелов столько, чтобы выравнить второй столбец.

printf(\\\\\\\"%s M\\\\\\\",\\\\\\\$2); for( i = length(\\\\\\\$2) + 2; i<20; i++) {printf(\\\\\\\" \\\\\\\")};

Но как ее экранировать, не понятно.

awk: {printf("%s",$2); for( i = length($2); i<20; i++) {printf(/" /"); printf("%s",$9)}
awk: ^ unterminated string



Вторая мысль, использовать sed, но из него, я ток выдумал:

sed 's/^[ \t]*//;s/[ \t]*$//' | sed -e :a -e 's/^.\{1,78\}$/ &/;ta', это не особо помогло.

Подскажите, пожалуйста, команду, или наведите на правильную мысль.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21257
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: выравнивание столбцов в bash

Сообщение Bizdelnick »

column -t
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: выравнивание столбцов в bash

Сообщение SLEDopit »

Ну что вы сразу про column вспомнили. Прямо неинтересно как-то.
У нас в консоли свои рюшечки есть. Вот например данные можно в красивую табличку обрамить:

Код: Выделить всё

{ echo -e "<html>\n<table border=1>";
cat FILE | awk '{printf "<tr>";for(i=1;i<=NF;i++){printf "<td>%s<td>", $i}printf "</tr>\n<tr>"}';
echo -e "</table>\n</html>";
} | w3m -dump -T 'text/html'
(:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
djo
Сообщения: 18
ОС: Debian

Re: выравнивание столбцов в bash

Сообщение djo »

А можно вот так еще

Код: Выделить всё

tr -s '[:space:]' '\n' < file > file1


Все пробелы заменяются на символ новой строки.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: выравнивание столбцов в bash

Сообщение drBatty »

lgar

$

$ echo "а 1 в 2 д 3 з 4" | sed 's/\s\+/ /' а 1 в 2 д 3 з 4



SLEDopit писал(а):
06.06.2012 20:58
{ echo -e "<html>\n<table border=1>";
cat FILE | awk '{printf "<tr>";for(i=1;i<=NF;i++){printf "<td>%s<td>", $i}printf "</tr>\n<tr>"}';
echo -e "</table>\n</html>";
} | w3m -dump -T 'text/html'

а флешанимацию можно?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: выравнивание столбцов в bash

Сообщение SLEDopit »

drBatty писал(а):
10.12.2012 21:00
а флешанимацию можно?
ну если перепилите adobe flash plugin под w3m )
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали: