Есть скрипт, который должен удалять все комментарии для Си-файла, подаваемого на вход скрипта. Должны обрабатываться комментарии следующих видов:
/* это комментарий, он может быть многострочным */
// закомментировано до конца строки
Вот скрипт:
#!/bin/bash
##
sed 's/\/\/.*//g' $1|
sed '/\/\*/,/\*\//d'|
sed '/^$/d' >new3.txt
exit 0
А вот ошибка:некорректно обрабатываются однострочные комментарии формата /* */ - вырезаются блоки текста из кода
Помогите исправить пожалуйста)
> Есть скрипт, который должен удалять все комментарии для Си-файла, подаваемого на вход
> Помогите исправить пожалуйста)А вложенные комментарии -- тоже? И _обязательно на sed-е??
---
$ cat ./xx
1
//2
3
4.1 /* 4 */ 4.2
5.1 /* 5
6 */ 6.1
$ cat ./xx |cpp
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"
13
4.1 4.2
5.1 6.1
$ _Первые 4 строчки отрезать -- см. man tail
> Первые 4 строчки отрезать -- см. man tailman head
>> Первые 4 строчки отрезать -- см. man tail
> man headГы-гы. eyes man tail
|tail -n +4
>> man head
> Гы-гы. eyes man tail
> |tail -n +4ВНЕЗАПНО челу потребуется посих-совместимость и недосуг вникать в диалекты.
>> |tail -n +4
> ВНЕЗАПНО челу потребуется посих-совместимостьВы там у ся в позиксах используете го^W head вот _так совместимо?
| tac| head -n -4| tacРыдаем над ВНЕЗАПНО тяжёлыми судьбами пионеров-первопроходцев!
| awk 'NR>4'
| sed '1,4d'
> Есть скрипт, который должен удалять все комментарии для Си-файла, подаваемого на вход
> скрипта. Должны обрабатываться комментарии следующих видов:
> /* это комментарий, он может быть многострочным */sed обрабатывает входной поток данных именно ПОСТРОЧНО. awk Вам в руки для обработки многострочных комментариев - он с БЛОКАМИ входящих данных работать умеет.
>[оверквотинг удален]
> Вот скрипт:
> #!/bin/bash
> ##
> sed 's/\/\/.*//g' $1|
> sed '/\/\*/,/\*\//d'|
> sed '/^$/d' >new3.txt
> exit 0
> А вот ошибка:некорректно обрабатываются однострочные комментарии формата /* */ - вырезаются
> блоки текста из кода
> Помогите исправить пожалуйста)