AWK сплит-выход с линией

Как можно разделить выходные строки с помощью tailf и awk следующим образом:

Из этого:

tail -f logfile.log | awk '/connected/ {print "\033[31m" $0 "\033[39m"}'

Выход:

2018-01-31 10:00 user connected autentication successful 2018-01-31 10:10 user connected autentication successful 2018-01-31 10:23 user connected autentication successful 2018-01-31 10:34 user connected autentication unsuccessful 2018-01-31 10:35 user connected autentication unsuccessful

К этому output:

2018-01-31 10:00 user connected autentication successful ---------------------------------------------------------- 2018-01-31 10:10 user connected autentication successful ---------------------------------------------------------- 2018-01-31 10:23 user connected autentication successful ---------------------------------------------------------- 2018-01-31 10:34 user connected autentication unsuccessful ---------------------------------------------------------- 2018-01-31 10:35 user connected autentication unsuccessful

Спасибо заранее!

1
задан 31 January 2018 в 11:53

2 ответа

Если все, что вы хотите сделать, это печать ---------------------------------------------------------- после каждой строки, установите ORS (разделитель выходной записи) на все, что вы хотите после каждой строки:

$ awk -v ORS='\033[39m\n----------------------------------------------------------\n' '/connected/ {print "\033[31m" $0}' foo 2018-01-31 10:00 user connected autentication successful ---------------------------------------------------------- 2018-01-31 10:10 user connected autentication successful ---------------------------------------------------------- 2018-01-31 10:23 user connected autentication successful ---------------------------------------------------------- 2018-01-31 10:34 user connected autentication unsuccessful ---------------------------------------------------------- 2018-01-31 10:35 user connected autentication unsuccessful ----------------------------------------------------------

Здесь я переехал \033[39m в ORS из команды print и окружен дефисами символами новой строки (\n).

0
ответ дан 17 July 2018 в 21:51

Если все, что вы хотите сделать, это печать ---------------------------------------------------------- после каждой строки, установите ORS (разделитель выходной записи) на все, что вы хотите после каждой строки:

$ awk -v ORS='\033[39m\n----------------------------------------------------------\n' '/connected/ {print "\033[31m" $0}' foo 2018-01-31 10:00 user connected autentication successful ---------------------------------------------------------- 2018-01-31 10:10 user connected autentication successful ---------------------------------------------------------- 2018-01-31 10:23 user connected autentication successful ---------------------------------------------------------- 2018-01-31 10:34 user connected autentication unsuccessful ---------------------------------------------------------- 2018-01-31 10:35 user connected autentication unsuccessful ----------------------------------------------------------

Здесь я переехал \033[39m в ORS из команды print и окружен дефисами символами новой строки (\n).

2
ответ дан 23 July 2018 в 22:28

Другие вопросы по тегам:

Похожие вопросы: