sed и файлы., fire002, 18-Июн-13, 18:21 [смотреть все]Приветствую. Подскажите как лучше реализовать такую схему: Есть директории, 1, 2, 3 и т.д с файлами list.txt в каждой директории, с содержимым в столбик. dsadf dfhdsdf addgfgd и т.д.Необходимо sed'om заменить определенные строки, в файлах, где есть определенная строка (в любом месте файла, а не в определенной строке.) sed '/baz/s/foo/bar/g' -- действует только на строку. Спасибо.
|
- sed и файлы.,
михалыч, 20:56 , 18-Июн-13 (1)>[оверквотинг удален] > Есть директории, 1, 2, 3 и т.д с файлами list.txt в каждой > директории, с содержимым в столбик. > dsadf > dfhdsdf > addgfgd > и т.д. > Необходимо sed'om заменить определенные строки, в файлах, где есть определенная строка > (в любом месте файла, а не в определенной строке.) > sed '/baz/s/foo/bar/g' -- действует только на строку. > Спасибо.Так а разве модификатор g не говорит о том, что замена глобальная, во всех строках?
- sed и файлы.,
fire002, 21:07 , 18-Июн-13 (2)>[оверквотинг удален] >> dsadf >> dfhdsdf >> addgfgd >> и т.д. >> Необходимо sed'om заменить определенные строки, в файлах, где есть определенная строка >> (в любом месте файла, а не в определенной строке.) >> sed '/baz/s/foo/bar/g' -- действует только на строку. >> Спасибо. > Так а разве модификатор g не говорит о том, что замена глобальная, > во всех строках?Мне не нужно заменять во всех строках. Суть в том, что если в файле есть строка, допустим baz То необходимо будет заменить строку foo на bar А если в файле нет упоминания про baz, не делать никаких замен.
- sed и файлы.,
pavlinux, 00:14 , 19-Июн-13 (3) +1 >>[оверквотинг удален] find . -name list.txt -exec sed -e '/baz/s/foo/bar/g' -i {} \;
- sed и файлы.,
михалыч, 06:24 , 19-Июн-13 (4) +1 >[оверквотинг удален] >>> sed '/baz/s/foo/bar/g' -- действует только на строку. >>> Спасибо. >> Так а разве модификатор g не говорит о том, что замена глобальная, >> во всех строках? > Мне не нужно заменять во всех строках. > Суть в том, что если в файле есть строка, допустим > baz > То необходимо будет заменить строку > foo на bar > А если в файле нет упоминания про baz, не делать никаких замен. sed 's/foo/bar/g' `grep -x -l baz *`
- sed и файлы.,
михалыч, 21:11 , 30-Июл-13 (6)>[оверквотинг удален] >>>> Спасибо. >>> Так а разве модификатор g не говорит о том, что замена глобальная, >>> во всех строках? >> Мне не нужно заменять во всех строках. >> Суть в том, что если в файле есть строка, допустим >> baz >> То необходимо будет заменить строку >> foo на bar >> А если в файле нет упоминания про baz, не делать никаких замен. > sed 's/foo/bar/g' `grep -x -l baz *` Вот так правильно sed -i '' 's/foo/bar/g' `grep -l baz basedir/*/*`
- sed и файлы.,
Andrey Mitrofanov, 09:42 , 19-Июн-13 (5) –4 [V]>[оверквотинг удален] > Есть директории, 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'
- sed и файлы.,
LU, 21:49 , 30-Июл-13 (7)Брр. Строка в строке. Может, вы имели ввиду "..где есть определённое слово"?
|