Как искать-заменять содержимое в файлах в Ubuntu Linux? - PullRequest
2 голосов
/ 21 апреля 2011

Моя платформа: рабочая станция Ubuntu Linux

В каталоге у меня есть ряд файлов с именем файла от xxx_1.in до xxx_50.in

Для каждого файла я хочу заменить abcпо определениюЕсли я делаю это индивидуально, я должен набрать: g / abc / s // def / g

Как написать скрипт для обработки всех файлов одновременно?

Ответы [ 2 ]

6 голосов
/ 21 апреля 2011
sed -i 's/abc/def/g' xxx_*.in

должно быть достаточно

0 голосов
/ 21 апреля 2011

Мне нравится Python, даже для сценариев оболочки. Я не могу понять, как использовать sed, поэтому я продолжаю поиск и замену Python:

#!/usr/bin/env python
import os, glob

for filename in glob('xxx_*.in'):
  os.rename(filename , filename .replace('abc', 'def'))

Таким образом, как встроенный скрипт, который запускается, когда вы копируете / вставляете его в Терминал (у меня на текущем компьютере нет Python, поэтому никаких гарантий),

python -c "import os, glob; eval('for f in glob(\'xxx_*.in\'):\n  os.rename(filename , filename .replace(\'abc\', \'def\'))'"

Похоже, вы имели в виду содержимое файла . То, что , я могу обойтись без Python (надеюсь, это сработает):

for f in xxx_*.in; do sed s/abc/def/g "$f"; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...