Использование SED для преобразования вывода из компилятора TMS320C55x для Visual Studio - PullRequest
0 голосов
/ 04 марта 2010

Я пытаюсь получить SED для преобразования вывода из компилятора TMS320C55x, чтобы он был правильно проанализирован Visual Studio (чтобы при нажатии на ошибку / предупреждение он переходил к месту в источнике. с другими компиляторами, но не используйте SED достаточно часто, чтобы это было безболезненно, и на этот раз он победил меня.

Вывод компилятора имеет вид:

"<file>", line <line>: <error|warning> <id>: <text>

например:

"ImageBuffer.c", line 21: error #20: identifier "p" is undefined

И мне нужно это преобразовать в:

<file>(<line>) : <error|warning> <id>: <text>

так для примера выше:

ImageBuffer.c(2) : error #20: identifier "p" is undefined

Важнейшей вещью является () часть.

Спасибо.

1 Ответ

2 голосов
/ 04 марта 2010

Я могу получить этот вывод, используя:

c:\src>echo "ImageBuffer.c", line 21: error #20: identifier "p" is undefined
    | sed -e "s/\"//" -e "s/\", line /(/" -e "s/:/) :/"
ImageBuffer.c(21) : error #20: identifier "p" is undefined

Мне нужно экранировать символы ", потому что я делаю это из cmd.exe, но вы можете использовать их без экранирования в более UNIXy-среде, если вы просто используете одинарные кавычки для окружения команд sed.

Отдельные sed команды:

  • "s/\"//" избавляется от начальной кавычки из имени файла.
  • "s/\", line /(/" избавляется от конечной кавычки из имени файла и заменяет текст между именем файла и номером строки открывающей скобкой перед номером строки.
  • "s/:/) :/" ставит закрывающую скобку после номера строки после удаления некоторого другого ненужного текста.
...