LinuxForum.Fans
Тема

sed заменить

Автор: SergMarkov 28 сообщений 3092 просмотров
#275301

Из-за возникающей ошибки при компиляции с новым glibc, там где в старом было только предупреждение, надо заменить конструкции вида

text

 /usr/include/glib-2.0/glib/deprecated/gallocator.h \

на

text

 /usr/include/glib-2.0/glib.h \

по крайней мере так советуют в разных местах, всего таких замен надо сделать более 200.
Но по причине кривых рук sed никак не хочет произвести такую замену, как не экранировал все подряд.
Как заменить ?
Или, еще лучше, как исправить эту ошибку - "напрямую может быть объявлен только glib.h" ?

#275303

ничего экранировать не надо... всё как 5 копеек просто:
sed 's!/usr/include/glib-2.0/glib/deprecated/gallocator.h!/usr/include/glib-2.0/glib.h!'

"SergMarkov" написал:
Или, еще лучше, как исправить эту ошибку - "напрямую может быть объявлен только glib.h" ?

а тут зависит от того что/где/какой версии... правильное решение — это использовать slice allocator вместо устаревших.

#275304
Fat-Zer написал:
ничего экранировать не надо... всё как 5 копеек просто:
sed 's!/usr/include/glib-2.0/glib/deprecated/gallocator.h!/usr/include/glib-2.0/glib.h!'

Да все бы хорошо, если одну, тут все понятно, но там их за 200 и нужен шаблон, а как вляпываешь шаблон перестает работать.

#275305
"SergMarkov" написал:
Да все бы хорошо, если одну, тут все понятно, но там их за 200 и нужен шаблон, а как вляпываешь шаблон перестает работать.

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

#275306
Fat-Zer написал:

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

да они все одного и того же типа , что то вроде

text

 /usr/include/glib-2.0/glib/gstringchunk.h

заменяешь на шаблон типа

text

 \/usr\/include\/glib-2.0\/glib/*\.h

в ответ "ку-ку, гриня" :-)

#275309
SergMarkov написал:
да они все одного и того же типа , что то вроде
text

 /usr/include/glib-2.0/glib/gstringchunk.h

заменяешь на шаблон типа

text

 \/usr\/include\/glib-2.0\/glib/*\.h

в ответ "ку-ку, гриня" :-)

не распарсил... жди того, кто проникнет в ход твоих мыслей...

#275311

Чего тут непонятного ?
Надо конструкции вида
/usr/include/glib-2.0/glib/deprecated/gallocator.h \
заменить на
/usr/include/glib-2.0/glib.h \
и конструкции вида
/usr/include/glib-2.0/glib/gversion.h \
на
/usr/include/glib-2.0/glib.h \

#275314
"SergMarkov" написал:
заменяешь на шаблон типа
\/usr\/include\/glib-2.0\/glib/*\.h
text
\/usr\/include\/glib-2.0\/glib\/w+?\.h

ЗЫ. '*' в регулярках означает совсем не то, что вы подумали...

#275315

Тебе надо просто экранировать слеш

#275349
-=Serj=- написал:
[quote="SergMarkov"]заменяешь на шаблон типа
\/usr\/include\/glib-2.0\/glib/*\.h
text
\/usr\/include\/glib-2.0\/glib\/w+?\.h

ЗЫ. '*' в регулярках означает совсем не то, что вы подумали...[/quote]
Тоже не катит..

text

sed 's,\/usr\/include\/glib-2.0\/glib\/w+?\.h,\/glib.h,g' -i controller.Po2

не заменяет например

text

 /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \

на нужное

text

 /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib.h \

Ну я вообще то вовсе не айтишник, это пришлось так :-)

#275351

чего вас всех тянет на экранирование, где нужно и где не нужно...
sed 's!/usr/include/glib-2.0/.*\.h!/usr/include/glib-2.0/glib.h!'

"SergMarkov" написал:
Ну я вообще то вовсе не айтишник, это пришлось так :-)

ну а мы вообще то не телепаты, это приходится так, гадать без файла перед глазами...

#275353
Fat-Zer написал:
чего вас всех тянет на экранирование, где нужно и где не нужно...
sed 's!/usr/include/glib-2.0/.*\.h!/usr/include/glib-2.0/glib.h!'

Оно ! Thanks :-)

Fat-Zer написал:

ну а мы вообще то не телепаты, это приходится так, гадать без файла перед глазами...

Была нездравая мысля запихнуть весь файл под спойлер, но он не влез :-)

#275355
"SergMarkov" написал:
Была нездравая мысля запихнуть весь файл под спойлер, но он не влез :-)

а pastebin'ы придумали трусы...

#275356

Да проще простого же :)

text
gzip -9c file >~/file.gz

и куда-нибудь на файлосвалку, хоть на тот же яндекс-диск, а ссылку - сюда.

#275357
Fat-Zer написал:

а pastebin'ы придумали трусы...

Да и там, насколько помню, вроде ограничение на 64 Кб

#275358
yars написал:
Да проще простого же :)
text
gzip -9c file >~/file.gz

и куда-нибудь на файлосвалку, хоть на тот же яндекс-диск, а ссылку - сюда.

Ну, боюсь что с такими файлами возиться никто не будет

#275359
SergMarkov написал:

Ну, боюсь что с такими файлами возиться никто не будет

Почему это?
...бойся, проси и верь (q)

#275360
"SergMarkov" написал:
Да и там, насколько помню, вроде ограничение на 64 Кб

память вас подводит...

text

alexander@goblin /tmp $ du -sh tags
14M     tags
alexander@goblin /tmp $ split -b 1M tags
alexander@goblin /tmp $ ls -l xa*
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xaa
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xab
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xac
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xad
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xae
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xaf
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xag
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xah
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xai
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xaj
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xak
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xal
-rw-r--r-- 1 alexander users 1048576 сент. 17 17:41 xam
-rw-r--r-- 1 alexander users  621306 сент. 17 17:41 xan
alexander@goblin /tmp $ wgetpaste xaa
Your paste can be seen here: http://bpaste.net/show/45993/
#275361

Fat-Zer написал:

память вас подводит...
text
alexander@goblin /tmp $ wgetpaste xaa
Your paste can be seen here: [url]http://bpaste.net/show/45993/[/url]

Тогда буду знать :-) Thanks
#275368
"Fat-Zer" написал:
чего вас всех тянет на экранирование, где нужно и где не нужно...

Да фиг его знает, я думал, может в sed надо... Тем-более, мельком заметил у Дока

Выбирает только строки, в которых встречается выражение /REGEXP/ , если ваше выражение содержит «/», вы их должны экранировать обратным слешем «\».

http://drbatty.ru/sed/ch06s02.html

Войдите или зарегистрируйтесь, чтобы ответить.