The OpenNET Project / Index page

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

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

"sed и файлы."  +/
Сообщение от fire002 email(ok) on 18-Июн-13, 18:21 
Приветствую. Подскажите как лучше реализовать такую схему:
Есть директории, 1, 2, 3 и т.д с файлами list.txt в каждой директории, с содержимым в столбик.
dsadf
dfhdsdf
addgfgd
и т.д.

Необходимо sed'om заменить определенные строки, в файлах, где есть определенная строка (в любом месте файла, а не в определенной строке.)
sed '/baz/s/foo/bar/g'  -- действует только на строку.
Спасибо.

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "sed и файлы."  +/
Сообщение от михалыч (ok) on 18-Июн-13, 20:56 
>[оверквотинг удален]
> Есть директории, 1, 2, 3 и т.д с файлами list.txt в каждой
> директории, с содержимым в столбик.
> dsadf
> dfhdsdf
> addgfgd
> и т.д.
> Необходимо sed'om заменить определенные строки, в файлах, где есть определенная строка
> (в любом месте файла, а не в определенной строке.)
> sed '/baz/s/foo/bar/g'  -- действует только на строку.
> Спасибо.

Так а разве модификатор g не говорит о том, что замена глобальная, во всех строках?

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

2. "sed и файлы."  +/
Сообщение от fire002 email(ok) on 18-Июн-13, 21:07 
>[оверквотинг удален]
>> dsadf
>> dfhdsdf
>> addgfgd
>> и т.д.
>> Необходимо sed'om заменить определенные строки, в файлах, где есть определенная строка
>> (в любом месте файла, а не в определенной строке.)
>> sed '/baz/s/foo/bar/g'  -- действует только на строку.
>> Спасибо.
> Так а разве модификатор g не говорит о том, что замена глобальная,
> во всех строках?

Мне не нужно заменять во всех строках.
Суть в том, что если в файле есть строка, допустим
baz
То необходимо будет заменить строку
foo на bar
А если в файле нет упоминания про baz, не делать никаких замен.

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

3. "sed и файлы."  +1 +/
Сообщение от pavlinux (ok) on 19-Июн-13, 00:14 
>>[оверквотинг удален]

find . -name list.txt -exec sed -e '/baz/s/foo/bar/g' -i {} \;

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

4. "sed и файлы."  +1 +/
Сообщение от михалыч (ok) on 19-Июн-13, 06:24 
>[оверквотинг удален]
>>> sed '/baz/s/foo/bar/g'  -- действует только на строку.
>>> Спасибо.
>> Так а разве модификатор g не говорит о том, что замена глобальная,
>> во всех строках?
> Мне не нужно заменять во всех строках.
> Суть в том, что если в файле есть строка, допустим
> baz
> То необходимо будет заменить строку
> foo на bar
> А если в файле нет упоминания про baz, не делать никаких замен.

sed 's/foo/bar/g' `grep -x -l baz *`

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

6. "sed и файлы."  +/
Сообщение от михалыч (ok) on 30-Июл-13, 21:11 
>[оверквотинг удален]
>>>> Спасибо.
>>> Так а разве модификатор g не говорит о том, что замена глобальная,
>>> во всех строках?
>> Мне не нужно заменять во всех строках.
>> Суть в том, что если в файле есть строка, допустим
>> baz
>> То необходимо будет заменить строку
>> foo на bar
>> А если в файле нет упоминания про baz, не делать никаких замен.
> sed 's/foo/bar/g' `grep -x -l baz *`

Вот так правильно
sed -i '' 's/foo/bar/g' `grep -l baz basedir/*/*`

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

5. "sed и файлы."  –4 +/
Сообщение от Andrey Mitrofanov on 19-Июн-13, 09:42 
>[оверквотинг удален]
> Есть директории, 1, 2, 3 и т.д с файлами list.txt в каждой
> директории, с содержимым в столбик.
> dsadf
> dfhdsdf
> addgfgd
> и т.д.
> Необходимо sed'om заменить определенные строки, в файлах, где есть определенная строка
> (в любом месте файла, а не в определенной строке.)
> sed '/baz/s/foo/bar/g'  -- действует только на строку.
> Спасибо.

find basedir/ -type f -name list.txt|xargs -r grep -l "baz"|xargs -r sed -i 's/foo/bar/g'

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

7. "sed и файлы."  +/
Сообщение от LU on 30-Июл-13, 21:49 
Брр. Строка в строке. Может, вы имели ввиду "..где есть определённое слово"?

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

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

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




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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