The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помогите устранить ошибку в коде sed"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Помогите устранить ошибку в коде sed"  +/
Сообщение от evgen12 (ok) on 08-Июл-12, 20:40 
Есть скрипт, который должен удалять все комментарии для Си-файла, подаваемого на вход скрипта. Должны обрабатываться комментарии следующих видов:
/* это комментарий, он может быть многострочным  */
// закомментировано до конца строки
Вот скрипт:
#!/bin/bash
##
sed 's/\/\/.*//g' $1|
sed '/\/\*/,/\*\//d'|
sed '/^$/d' >new3.txt
exit 0
А вот ошибка:некорректно обрабатываются однострочные комментарии формата /* */ - вырезаются блоки текста из кода
Помогите исправить пожалуйста)
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помогите устранить ошибку в коде sed"  +/
Сообщение от Andrey Mitrofanov on 08-Июл-12, 21:48 
> Есть скрипт, который должен удалять все комментарии для Си-файла, подаваемого на вход
> Помогите исправить пожалуйста)

А вложенные комментарии -- тоже? И _обязательно на 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>"
1

3
4.1 4.2
5.1 6.1
$ _

Первые 4 строчки отрезать -- см. man tail

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Помогите устранить ошибку в коде sed"  +/
Сообщение от DeadLoco (ok) on 09-Июл-12, 03:03 
> Первые 4 строчки отрезать -- см. man tail

man head

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Помогите устранить ошибку в коде sed"  +/
Сообщение от Andrey Mitrofanov on 10-Июл-12, 20:48 
>> Первые 4 строчки отрезать -- см. man tail
> man head

Гы-гы. eyes man tail

|tail -n +4

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Помогите устранить ошибку в коде sed"  +/
Сообщение от DeadLoco (ok) on 11-Июл-12, 11:04 
>> man head
> Гы-гы. eyes man tail
> |tail -n +4

ВНЕЗАПНО челу потребуется посих-совместимость и недосуг вникать в диалекты.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Спасибо Столману за позикс"  +/
Сообщение от Andrey Mitrofanov on 11-Июл-12, 18:17 
>> |tail -n +4
> ВНЕЗАПНО челу потребуется посих-совместимость

Вы там у ся в позиксах используете го^W head вот _так совместимо?
| tac| head -n -4| tac

Рыдаем над ВНЕЗАПНО тяжёлыми судьбами пионеров-первопроходцев!
| awk 'NR>4'
| sed '1,4d'

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

3. "Помогите устранить ошибку в коде sed"  –1 +/
Сообщение от LSTemp (ok) on 10-Июл-12, 20:17 
> Есть скрипт, который должен удалять все комментарии для Си-файла, подаваемого на вход
> скрипта. Должны обрабатываться комментарии следующих видов:
> /* это комментарий, он может быть многострочным  */

sed обрабатывает входной поток данных именно ПОСТРОЧНО. awk Вам в руки для обработки многострочных комментариев - он с БЛОКАМИ входящих данных работать умеет.

>[оверквотинг удален]
> Вот скрипт:
> #!/bin/bash
> ##
> sed 's/\/\/.*//g' $1|
> sed '/\/\*/,/\*\//d'|
> sed '/^$/d' >new3.txt
> exit 0
> А вот ошибка:некорректно обрабатываются однострочные комментарии формата /* */ - вырезаются
> блоки текста из кода
> Помогите исправить пожалуйста)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру