Встроенная обработка строк в bash отображает беспорядочный вывод

Несколько более надежным шаблоном (, т.е. несколько меньшим риском случайного пропуска неправильных строк ), может быть

| grep -v "= -1 ENOENT [(]No such file or directory[)]$"

Т.е. скопируйте -вставьте конец строки, «избегая» квадратных скобок (, которые в противном случае могли бы рассматриваться как специальные символы ), и добавьте специальный символ $в конец, который «привязывает» шаблон к концу линии.

Я не могу найти лучшего варианта в man strace. Быстрые и грязные манипуляции с текстом — это Unix Way :-P.

Почти наверняка можно делать то, что вы хотите, с помощью пользовательского сценария gdb. Однако это больше работы, и у меня нет готового сценария.

Другой вопрос относится к сценарию tracefile, который можно запустить с параметром -e. Это по-прежнему реализуется путем анализа вывода strace, поэтому он также не кажется полностью надежным, но я думаю, возможно, вы бы предпочли его.https://gitlab.com/ole.tange/tangetools/blob/master/tracefile/tracefile

0
22.11.2019, 17:33
1 ответ

В конце содержимого var3есть символ возврата каретки (CR ). После того, как он печатается без непосредственно следующего за ним символа новой строки (перевода строки, LF ), оставшаяся часть строки печатается с левого края, перезаписывая уже напечатанное начало строки.

Стандарт окончания строки в Unix — LF, а не CR LF.

Перепишите строку скрипта, в которой определена переменная, или используйте dos2unixв файле.

2
28.01.2020, 02:29

Теги

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