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 атлет, но еще и программист?
Übermensch, не иначе.
марик - камарик
03-14-2011, 03:29 AM
Ты не только элитный award winning атлет, но еще и программист?
Ü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 атлет, но еще и программист? Ü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.)
Принцип "Делай так, как умеешь".
Не умеешь на sed - делай на C(++), не умеешь на C - делай на Бейсике, не умеешь ни на чем - попроси Srg Clock или Марика - у них получится! :)
+1
Разговоры о том "что круче" полная фигня... главное результат.
Я пытаюсь заменить определенный 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Гб
Рукурсию надо на огромные текстовые файлы. Представь все netlists на 10к-60Гб
Так файл и не нужно открывать в ручную... есть там функция find/replace и можно хоть на всем диске заменить с одного стринга на другой.
марик - камарик
03-21-2011, 04:07 PM
Так файл и не нужно открывать в ручную... есть там функция find/replace и можно хоть на всем диске заменить с одного стринга на другой.
ты вот об этой?
http://forum.russianamerica.com/f/showpost.php?p=4792030&postcount=12
ты вот об этой?
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>/' {} \;
Погоди, я же на работе. это мбне надо на рабочий комп прогу устанавливать.
Идея в том чтоб это сделать на любом терминале. Это можно сделать вот такой командой
find <фолдер> -type f -exec sed -i 's/<old string>/<new string>/' {} \;
спасибо за инфу, а вось пригодится когда...