О escape последовательностях и regexp
Была у меня задача распарсить вывод с утилиты схожей с top и по cron’y отправлять на почту. Через cat значит все ровно и красиво, а на почте
9 36 [;muser[m [;mproc[m
8 32 [;muser[m [;mproc[m
3 12 [;muser[m [;mproc[m
2 8 [;muser[m [;mproc[m
2 8 [;muser[m [;mproc[m
1.66667 6.66667 [;muser[m [;mproc[m
1 4 [;muser[m [;mproc[m
1 4 [;muser[m [;proc[m
1 4 [;muser[m [;proc[m
1 4 [;muser[m [;proc[m
А вот
отправляет бинарник
cat log | mail -s re user
Проблема оказалась в цветном выводе этой утилиты и отсутствия опции —no-color, а именно escape последовательностях, которые записались в файл.
Вылечилось при помощи sed -i 's;\[\;m;;g;s;\[m;;g;'
В этих escape последовательностях должны быть еще и цифры, но их убил другой regexp.