Автор Тема: подмяна на дума във файл през bash  (Прочетена 2448 пъти)

mishot

  • Напреднали
  • *****
  • Публикации: 191
  • Distribution: Fedora 16
  • Window Manager: Gnome-Shell
    • Профил
налага се да сменя мейл адрес, намиращ се на доста места в доста различни файлове.
пример:
       в кода на няколко html, php файла на локален сървър се съдържа адреса
       primer@domain.com
Опитах с:
       cat primer.html | grep primer@domain.com
и ми извади местата, където се среща primer@domain.com.
Как да го накарам да замести primer@domain.com с admin@domain.com(новия мейл)



Активен

ANTIADMIN

  • Напреднали
  • *****
  • Публикации: 660
  • Distribution: Windows XP Pro latest updates
  • ANTIADMIN
    • Профил
подмяна на дума във файл през bash
« Отговор #1 -: Jul 30, 2008, 13:39 »
man sed
man vi
'<img'>
Активен

phobot

  • Напреднали
  • *****
  • Публикации: 29
  • Distribution: Desktops: Debian; Servers: Gentoo
  • Window Manager: Gnome
    • Профил
подмяна на дума във файл през bash
« Отговор #2 -: Jul 30, 2008, 13:42 »
можеш да иползваш sed
Примерен код
sed  's/primer@domain.com/admin@domain.com/' file.php > file.php.new

*много важно е файла който записваш да е различен от файла който променяш! След като промените са направени можеш да преместиш файла със
Примерен код
mv file.php.new file.php




Активен

"Какво ще стане ако свържа това с това?"
~Последните думи на много хора

pvt

  • Напреднали
  • *****
  • Публикации: 35
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
подмяна на дума във файл през bash
« Отговор #3 -: Jul 30, 2008, 15:29 »
Вече не си спомням защо не се спрях на sed, но perl ми върши добра работа точно в подобни случаи. Командата е perl -i -pe 's/OLDSTRING/NEWSTRING/g' $file
Обикновено използвам нещо подобно:

Примерен код
#!/bin/bash
for Files in `find -type f | grep html` # Search for *.html files
do
perl -i -pe 's/primer\@domain\.com/admin\@domain\.com/g' $Files # Substitute content
done
exit 0


Това ще промени всичко и в поддиректориите.
Активен

mishot

  • Напреднали
  • *****
  • Публикации: 191
  • Distribution: Fedora 16
  • Window Manager: Gnome-Shell
    • Профил
подмяна на дума във файл през bash
« Отговор #4 -: Jul 30, 2008, 15:29 »
Цитат (phobot @ Юли 30 2008,14:42)
можеш да иползваш sed
Примерен код
sed  's/primer@domain.com/admin@domain.com/' file.php > file.php.new

*много важно е файла който записваш да е различен от файла който променяш! След като промените са направени можеш да преместиш файла със
Примерен код
mv file.php.new file.php

Благодаря ти! Трябваше да си играя цял ден, а така стана с 1 ред.

Проблема е решен!
Активен

teh

  • Напреднали
  • *****
  • Публикации: 56
    • Профил
подмяна на дума във файл през bash
« Отговор #5 -: Jul 31, 2008, 14:53 »
find path/ -type f -iname \*.php -or -iname \*.html | xargs sed -i.backup s/user\@domain.tld/pepi\@domain.tld/gi

без бекъп копия съответно:

find path/ -type f -iname \*.php -or -iname \*.html | xargs sed -i s/user\@domain.tld/pepi\@domain.tld/gi



Активен

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
подмяна на дума във файл през bash
« Отговор #6 -: Jul 31, 2008, 17:40 »
А добрата стара функция "Find & Replace"  - имаш я във всеки GUI текстов редактор!!!
Активен

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
подмяна на дума във файл през bash
« Отговор #7 -: Jul 31, 2008, 18:12 »
Цитат (nov_chovek @ Юли 31 2008,17:40)
А добрата стара функция "Find & Replace"  - имаш я във всеки GUI текстов редактор!!!

човека пита за bash все пак, най вероятно няма графичен интерфейс '<img'>
Активен

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
подмяна на дума във файл през bash
« Отговор #8 -: Jul 31, 2008, 18:40 »
ам някои GUI редактори имат и command line параметри де '<img'>
Активен

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
подмяна на дума във файл през bash
« Отговор #9 -: Jul 31, 2008, 19:18 »
Цитат (nov_chovek @ Юли 31 2008,18:40)
ам някои GUI редактори имат и command line параметри де '<img'>

е добре де, ама имат като зависимост някоя граф. среда '<img'>
Активен

dvbb

  • Напреднали
  • *****
  • Публикации: 207
  • Nothing else!
    • Профил
подмяна на дума във файл през bash
« Отговор #10 -: Aug 01, 2008, 10:58 »
mcedit ->F4
Активен

mishot

  • Напреднали
  • *****
  • Публикации: 191
  • Distribution: Fedora 16
  • Window Manager: Gnome-Shell
    • Профил
подмяна на дума във файл през bash
« Отговор #11 -: Aug 01, 2008, 12:17 »
Проблема е решен, както писах по-горе.
Благодаря още веднъж на всички отзовали се!
Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
подмяна на дума във файл през bash
« Отговор #12 -: Aug 01, 2008, 14:54 »
/offtopic

Добре де хора, човека вече си реши проблема, вие продължавате да пишете простотии...

mc -> F4 - гениално! Като имаш 300 файла, в които да го промениш, ше знаеш че е най-доброто решение това.

Същата работа с GUI редакторите...

аман
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH: Как да поддържам една програма работеща
Общ форум
Regia 1 7186 Последна публикация Feb 16, 2005, 08:51
от
bash
Настройка на програми
tuxi 7 2432 Последна публикация Jun 11, 2005, 19:12
от tuxi
Моля за малко помощ за BASH
Настройка на програми
bonbon 3 1426 Последна публикация Dec 04, 2005, 16:37
от bonbon
BASH
Общ форум
Dean79 3 1631 Последна публикация Jan 13, 2006, 00:24
от Dean79
Bash присвояване на стойност от файл
Общ форум
Pulear 6 2104 Последна публикация May 21, 2006, 17:20
от Pulear