Я использую grep
команду для поиска строки во многих файлах. Есть ли что-то похожее на "поиск и замена"?
решение1
Вы ищетеsed
команда. Например, чтобы заменить "dog" на "cat" во всех текстовых файлах в текущем каталоге:
sed -i 's/dog/cat/' *.txt
решение2
На ум приходит sed. Пример:
sed s/cat/dog/ <input >output
Эта функция ищет слово cat в строке и помещает слово dog на его место в файле input, а затем записывает его в файл output.
решение3
sed
— правильный инструмент; но в качестве альтернативы вы можете использовать даже ex
команды в vim
:
vim -c 'args <files> | argdo %s/cat/dog/g | x'
где <files>
— список файлов или шаблонов, в которых вы хотите сделать замену.
решение4
Вы можете использовать Vim в режиме Ex:
for b in *.txt
do
ex -sc '%s/OLD/NEW/g|x' "$b"
done
%
выбрать все строкиs
заменятьg
заменить все экземпляры в каждой строкеx
сохрани и закрой