На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
sedikpoll
Сообщения: 100
Сообщение
sedikpoll » 08.02.2013 18:23
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
Сообщение
SLEDopit » 08.02.2013 18:32
Код: Выделить всё
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
Сообщение
sedikpoll » 08.02.2013 18:52
Ориентироваться на количество столбцов не вариант в моем случаи. Нужно сдигать именно ту что начинается ИП.
sedikpoll
Сообщения: 100
Сообщение
sedikpoll » 08.02.2013 19:02
Ваш вариант подтолкнул на такую идею, но где то в нем ошибка.
Код: Выделить всё
awk '{if($1==/^([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3})/ {print "_ "$0 }}' | sed 's/^_ / /'
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 08.02.2013 19:20
Вот так попробуйте.
Код: Выделить всё
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
Сообщение
sedikpoll » 09.02.2013 01:57
Код: Выделить всё
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
Сообщение
Bizdelnick » 09.02.2013 02:34
sedikpoll писал(а): ↑ 09.02.2013 01:57
под Debian не пошло, ругается на "gawk"
Так установите его. Пакет называется, как ни странно, gawk.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
sedikpoll
Сообщения: 100
Сообщение
sedikpoll » 09.02.2013 02:55
Ну с этим понятно. Просто не ожидал такого, теперь думаю как рабочий выриант под awk сделать, что бы обойтись без всяких дополнительних установок.