PDA

View Full Version : sed question



марик - камарик
03-07-2011, 05:20 PM
Я пытаюсь заменить определенный string во всех файлах включая сабфолдеры.



я пока откопал несколько варриантов:
perl -pi -e 's/v101210gcp.64_GLS/v110307gcp.64_GLS/g' -r
sed 's/v101210gcp.64_GLS/v110307gcp.64_GLS/g' .
or
sed 's/v101210gcp.64_GLS/v110307gcp.64_GLS/g' -r



Короче, только не нужно мне давать ссылки на sed manual. Я знаю как гуглить. Мне нужно знать точно.

Srg Clock
03-07-2011, 05:25 PM
пишешь программулину на С++ и она удаляет

я кстати не шучу.. у меня сегодня была одна фуетень не работала - потратил час на то, чтобы она делала то что я хочу (и что она должна по дрюководству) - без толку.. может и можно завести было, но я за 5 мин написал процедурку которая всё это влоб настроила и не ипу себе моск больше

согласись, что 5 мин и работает лучше чем 60 мин и не работает

марик - камарик
03-07-2011, 05:37 PM
пишешь программулину на С++ и она удаляет

я кстати не шучу.. у меня сегодня была одна фуетень не работала - потратил час на то, чтобы она делала то что я хочу (и что она должна по дрюководству) - без толку.. может и можно завести было, но я за 5 мин написал процедурку которая всё это влоб настроила и не ипу себе моск больше

согласись, что 5 мин и работает лучше чем 60 мин и не работает

На С долго. Такие вещи надо делать с sed

марик - камарик
03-07-2011, 06:07 PM
Короче, вот это пока самый быстрый hack который я нашел.


grep -l -r . | tee files.txt
foreach var (`cat files.txt`)
perl -pie 's/<old>/<NEW>/g' $var
end

Srg Clock
03-07-2011, 07:12 PM
Я тебе принцип сказал.
Сумел справиться стандартными методами - маладец.

марик - камарик
03-08-2011, 09:27 AM
Я тебе принцип сказал.
Сумел справиться стандартными методами - маладец.

Что же, спасибо за принцип :)

Сцука моя команда не сработала. Меня это бесить начинает.

марик - камарик
03-08-2011, 09:37 AM
Я тебе принцип сказал.
Сумел справиться стандартными методами - маладец.


Вот это лучше всего работает. Толькочто протестировал
find ./ -type f -exec sed -i 's/<old string>/<new string>/' {} \;

Alex_3112
03-08-2011, 12:01 PM
Я тебе принцип сказал.
Принцип "Делай так, как умеешь".
Не умеешь на sed - делай на C(++), не умеешь на C - делай на Бейсике, не умеешь ни на чем - попроси Srg Clock или Марика - у них получится! :)

Srg Clock
03-08-2011, 02:11 PM
Человек спросил помощи. Я в меру своих возможностей попытался и пытаюсь помочь.

DeepSpace
03-13-2011, 09:05 PM
Человек спросил помощи. Я в меру своих возможностей попытался и пытаюсь помочь.

Есть программа Flash Renamer, я ею пользуюсь когда надо при подобных ситуациях.

А вы из принципа хотите свой личный код написать или из за неимения правильной программы?

Srg Clock
03-14-2011, 12:32 AM
Увы из-за неимения.

марик - камарик
03-14-2011, 02:32 AM
Есть программа Flash Renamer, я ею пользуюсь когда надо при подобных ситуациях.

А вы из принципа хотите свой личный код написать или из за неимения правильной программы?
Никакой программы не надо.
find <data path here> -type f -exec sed -i 's/<old string>/<new string>/' {} \;

for example:

find /directory/subdirectory/ -type f -exec sed -i 's/<old string>/<new string>/' {} \;


or u can just to to the directory where you need to replace all strings and type this:
find ./ -type f -exec sed -i 's/<old string>/<new string>/' {} \;

марик - камарик
03-14-2011, 02:37 AM
Человек спросил помощи. Я в меру своих возможностей попытался и пытаюсь помочь.

Спасибо.

Я иногда предпочитаю повозиться с юниксом потомучто на нем всю жизнь работать.

Дядя Саша
03-14-2011, 03:12 AM
пишешь программулину на С++ и она удаляет

я кстати не шучу.. у меня сегодня была одна фуетень не работала - потратил час на то, чтобы она делала то что я хочу (и что она должна по дрюководству) - без толку.. может и можно завести было, но я за 5 мин написал процедурку которая всё это влоб настроила и не ипу себе моск больше

согласись, что 5 мин и работает лучше чем 60 мин и не работает

Ты не только элитный award winning атлет, но еще и программист?

&#220;bermensch, не иначе.

марик - камарик
03-14-2011, 03:29 AM
Ты не только элитный award winning атлет, но еще и программист?

&#220;bermensch, не иначе.

Тоесть, то что я элитный атлет это само собой, но разьве я об этом уже рассказал? Я планировал открыть тему в которой тетки могут записаться в мой стлетический фан клуб.

Дядя Саша
03-14-2011, 03:49 AM
Тоесть, то что я элитный атлет это само собой, но разьве я об этом уже рассказал? Я планировал открыть тему в которой тетки могут записаться в мой стлетический фан клуб.

Я вообще-то про Сергея говорил. Он фотку публиковал на пьедестале почета.

Но если ты тоже элитный атлет, то это похвально.

марик - камарик
03-14-2011, 03:55 AM
Я вообще-то про Сергея говорил. Он фотку публиковал на пьедестале почета.

Но если ты тоже элитный атлет, то это похвально.

Ага, это все объясняет. Я наверное подумал что ты про меня потомучто мне сложно представить что в людях кроме меня есть что-то хорошее иули похвальное.

Дядя Саша
03-14-2011, 03:57 AM
Ага, это все объясняет. Я наверное подумал что ты про меня потомучто мне сложно представить что в людях кроме меня есть что-то хорошее иули похвальное.

Именно поэтому я и допустил на днях пару обидных и необоснованных замечаний в твой адрес: завидую огненно, не могу ничего с собой поделать.

Ты уж прости. :(

марик - камарик
03-14-2011, 04:12 AM
Именно поэтому я и допустил на днях пару обидных и необоснованных замечаний в твой адрес: завидую огненно, не могу ничего с собой поделать.

Ты уж прости. :(

Я понимаю. Многим людям хочется стать бого подобными злыми красивыми гениями.

on a side note Для тех кто смотрит Big Bang Theory, Shaldon is my favorite char. Я невольно меняю свой имидж на шелдона.

Srg Clock
03-14-2011, 10:42 AM
Ты не только элитный award winning атлет, но еще и программист? &#220;bermensch, не иначе.


Угу. Хотя до уберменьшей мне ещё надо в плане доходов подрасти..

марик - камарик
03-18-2011, 10:47 AM
А вот кто-нибудь знает как убрать в комментарий много линий кода с emacs? Мне тут надо было 600 flip-flops убить и я откопал эту комманду.
•‘C-u’ N ‘M-x comment-region’, where N is an integer, adds or removes N ;. For example:
◦‘C-u 3 M-x comment-region’ adds ;;;.
◦‘C-u -2 M-x comment-region’ removes ;;. (As always, ‘M-’ N is a shortcut for ‘C-u’ N when N is negative.)

ETTY
03-19-2011, 08:11 AM
Принцип "Делай так, как умеешь".
Не умеешь на sed - делай на C(++), не умеешь на C - делай на Бейсике, не умеешь ни на чем - попроси Srg Clock или Марика - у них получится! :)

+1

Разговоры о том "что круче" полная фигня... главное результат.

ETTY
03-19-2011, 08:13 AM
Я пытаюсь заменить определенный string во всех файлах включая сабфолдеры.



я пока откопал несколько варриантов:
perl -pi -e 's/v101210gcp.64_GLS/v110307gcp.64_GLS/g' -r
sed 's/v101210gcp.64_GLS/v110307gcp.64_GLS/g' .
or
sed 's/v101210gcp.64_GLS/v110307gcp.64_GLS/g' -r



Короче, только не нужно мне давать ссылки на sed manual. Я знаю как гуглить. Мне нужно знать точно.

А какие именно файлы?
в Adobe DreamWeaver например есть такая фишка встроеная. Если Дрим может файл прочитать, то заменит все что нада, в любом фолдере в любом сабфолдере.

марик - камарик
03-20-2011, 11:06 PM
А какие именно файлы?
в Adobe DreamWeaver например есть такая фишка встроеная. Если Дрим может файл прочитать, то заменит все что нада, в любом фолдере в любом сабфолдере.

Рукурсию надо на огромные текстовые файлы. Представь все netlists на 10к-60Гб

ETTY
03-21-2011, 05:05 AM
Рукурсию надо на огромные текстовые файлы. Представь все netlists на 10к-60Гб

Так файл и не нужно открывать в ручную... есть там функция find/replace и можно хоть на всем диске заменить с одного стринга на другой.

марик - камарик
03-21-2011, 04:07 PM
Так файл и не нужно открывать в ручную... есть там функция find/replace и можно хоть на всем диске заменить с одного стринга на другой.
ты вот об этой?
http://forum.russianamerica.com/f/showpost.php?p=4792030&postcount=12

ETTY
03-21-2011, 05:53 PM
ты вот об этой?
http://forum.russianamerica.com/f/showpost.php?p=4792030&postcount=12

Нет, я про обыктовенный DreamWeaver говорю... или программы ему подобные.

марик - камарик
03-21-2011, 05:55 PM
Нет, я про обыктовенный DreamWeaver говорю... или программы ему подобные.

Погоди, я же на работе. это мбне надо на рабочий комп прогу устанавливать.

Идея в том чтоб это сделать на любом терминале. Это можно сделать вот такой командой
find <фолдер> -type f -exec sed -i 's/<old string>/<new string>/' {} \;

ETTY
03-21-2011, 10:05 PM
Погоди, я же на работе. это мбне надо на рабочий комп прогу устанавливать.

Идея в том чтоб это сделать на любом терминале. Это можно сделать вот такой командой
find <фолдер> -type f -exec sed -i 's/<old string>/<new string>/' {} \;

спасибо за инфу, а вось пригодится когда...