1 (11.03.2014 13:20:52 отредактировано prostornet)

Ни как не могу понять, как сделать вывод awk в красном цвете

grep -i 'locked out' ${FILE} | awk '{if($2=='$DATE') {print $1 ,$2 ,$3 ,$8}; }' | sed ' s/\[//g ' | cut -d'@' -f1

P.S.:
при попытке оформить вот так

awk '{if($2=='$DATE') {print "\033[1;31m" $1 ,$2 ,$3 ,$8 "\033[0m"}; }' 

вывод следующего характера:

E1;31mMar 11 06:43:39 none

2 (11.03.2014 13:22:45 отредактировано Lupo Alberto)

...и, казалось бы, при чём тут awk?
P.S. В вашей конструкции последняя команда, которая выводит в консоль — cut.
P.S.S. Покажите пример файла и опишите результат, которого хотите добиться.

Был, был и весь вышел...

3 (11.03.2014 13:52:01 отредактировано prostornet)

Грепится лог файл.
После grep и awk имеет вот такой вид:

Mar 11 13:10:44 [iffadmin@domen.ru]
Mar 11 13:13:14 [shpat@domen.ru]
Mar 11 13:15:03 [filippov@domen.ru]
Mar 11 13:16:02 [none@domen.ru]
Mar 11 13:25:44 [arc@domen.ru]

и соответственно sed убирает скобки, а cut отрезает домен.


Mar 11 13:10:44 iffadmin
Mar 11 13:13:14 shpat
Mar 11 13:15:03 filippov
Mar 11 13:16:02 none
Mar 11 13:25:44 arc

Хотелось бы выводить имена красным цветом.

4

ИМХО, тут простых awk и sed недостаточно. Напишите скрипт-обертку, в котором нужные строки считываются строка за строкой в переменную, и уже эта переменная выводится через echo -e.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

5 (11.03.2014 13:51:33 отредактировано prostornet)

yars пишет:

ИМХО, тут простых awk и sed недостаточно. Напишите скрипт-обертку, в котором нужные строки считываются строка за строкой в переменную, и уже эта переменная выводится через echo -e.

Думал об этом, но как это оформить пока опыта не хватает.
Можно наводочку. где подсмотреть?

6

Mar 11 13:10:44 [iffadmin@domen.ru]
Mar 11 13:13:14 [shpat@domen.ru]
Mar 11 13:15:03 [filippov@domen.ru]
Mar 11 13:16:02 [none@domen.ru]
Mar 11 13:25:44 [arc@domen.ru]

последний раз показываю:

 Консоль:
$ sed -r 's/(.*)\[([^@]+)(.*)\]/\1\x1B[41m\2\x1B[0m/' tmp/zz
Mar 11 13:10:44 iffadmin
Mar 11 13:13:14 shpat
Mar 11 13:15:03 filippov
Mar 11 13:16:02 none
Mar 11 13:25:44 arc

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

7

yars пишет:

тут простых awk и sed недостаточно.

да-да. Конечно. Без C# это не сделать.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

8

последний раз показываю:

 Консоль:
$ sed -r 's/(.*)\[([^@]+)(.*)\]/\1\x1B[41m\2\x1B[0m/' tmp/zz
Mar 11 13:10:44 iffadmin
Mar 11 13:13:14 shpat
Mar 11 13:15:03 filippov
Mar 11 13:16:02 none
Mar 11 13:25:44 arc

А можно поподробней разобрать конструкцию 's/(.*)\[([^@]+)(.*)\]/\1\x1B[41m\2\x1B[0m/'

9

prostornet, можно http://emulek.github.io/sed/

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

10

prostornet пишет:

s/(.*)\[([^@]+)(.*)\]/\1\x1B[41m\2\x1B[0m/

s/ замена

(.*) любые символы в любом количестве \1

\[ квадратная скобка

([^@]+) любые символы кроме @ количеством от 1 и больше \2


(.*) любые символы в любом количестве

\] квадратная скобка

/

\1 см. выше, сюда вставляется \1

\x1B[41m красный цвет фона

\2 сюда \2

\x1B[0m обычный цвет

/

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

11

Огромное спасибо.
Вот теперь понятно, что нашу строчку разобрали на три блока и выводим 1 и 2 блоки, а скобки за  разбором остались.

12

prostornet пишет:

на три блока и выводим 1 и 2 блоки

ну да. Причём третий блок можно скобками и не выделять, это для наглядности только.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)