Смещение на столбец

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

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

sedikpoll
Сообщения: 100

Смещение на столбец

Сообщение sedikpoll »

cat ./text.txt | column -t

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

12.abc.1       123.13.451.43  asd
qwerty         123.13.451.44  asd
123.13.451.45  dsa
123.13.451.46  dsa
13.abc.1       123.13.451.47  qwer
qwerty2        123.13.451.48  qwer

Подскажите каким образом можно добиться смещения строки начинающейся с ИП адреса, во вторую колонку (т.е. выравнивания).

Пытаюсь добиться:

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

12.abc.1       123.13.451.43  asd
qwerty         123.13.451.44  asd
               123.13.451.45  dsa
               123.13.451.46  dsa
13.abc.1       123.13.451.47  qwer
qwerty2        123.13.451.48  qwer


gawk --re-interval '$1 ~ /([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}/ {print ... }'
Начал с определения этих строк, но дальше пока застопорился.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Смещение на столбец

Сообщение SLEDopit »

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

awk '{if(NF==2){print "_ "$0}else{print $0}}' text.txt | column -t | sed 's/^_ /  /'
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.
Спасибо сказали:
sedikpoll
Сообщения: 100

Re: Смещение на столбец

Сообщение sedikpoll »

Ориентироваться на количество столбцов не вариант в моем случаи. Нужно сдигать именно ту что начинается ИП.
Спасибо сказали:
sedikpoll
Сообщения: 100

Re: Смещение на столбец

Сообщение sedikpoll »

Ваш вариант подтолкнул на такую идею, но где то в нем ошибка.

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

awk '{if($1==/^([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3})/ {print "_ "$0 }}' | sed 's/^_ /  /'
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Смещение на столбец

Сообщение SLEDopit »

Вот так попробуйте.

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

gawk --re-interval '{if($1 ~ /([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}/){print "_ "$0 }}

ну и column -t перед sed'ом не забывайте.
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.
Спасибо сказали:
sedikpoll
Сообщения: 100

Re: Смещение на столбец

Сообщение sedikpoll »

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

gawk --re-interval '{if($1 ~ /([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}/){print "_ "$0 }else{print $0}}'
вот, работает как нужно. Тестировал на Red Hat, под Debian не пошло, ругается на "gawk". Опции awk: -W re-interval или --re-interval не дали результатов.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21452
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Смещение на столбец

Сообщение Bizdelnick »

sedikpoll писал(а):
09.02.2013 01:57
под Debian не пошло, ругается на "gawk"

Так установите его. Пакет называется, как ни странно, gawk.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
sedikpoll
Сообщения: 100

Re: Смещение на столбец

Сообщение sedikpoll »

Ну с этим понятно. Просто не ожидал такого, теперь думаю как рабочий выриант под awk сделать, что бы обойтись без всяких дополнительних установок.
Спасибо сказали: