Могу ли я быстро искать/заменять в нескольких файлах .txt из терминала?
У меня около 100 файлов .txt, содержащих простой текст. Каким-то образом некоторые из данных были повреждены и их необходимо найти/заменить.
Мне нужно найти символы "-" и заменить его длинной тире: "-".
Есть ли способ сделать это быстро с помощью команды в терминале?
Имена файлов .txt в моем каталоге нумеруются последовательно: 1.txt, 2.txt и т.д.
Спасибо!
Ответы
Ответ 1
GNU sed
:
sed -i 's/--/—/g' *.txt
OSX BSD sed
:
Вам нужно указать расширение файла резервной копии. Чтобы создать файл резервной копии с расширением: .txt.bak
:
sed -i '.bak' 's/--/—/g' *.txt
Чтобы полностью заменить файлы, укажите пустое расширение:
sed -i '' 's/--/—/g' *.txt
Ответ 2
sed -i 's/--/–/g' *.txt
должен работать. Флаг -i
на sed
заставляет его действовать на файлы на месте, а s
означает замену, а g
заставляет его заменять несколько вхождений шаблона в одной строке. Просмотрите документацию sed
для получения дополнительной информации.
EDIT: Это работает на GNU/Linux; оказывается, что синтаксис немного отличается от OSX (см. комментарии и принятый ответ).