Подтвердить что ты не робот

Могу ли я быстро искать/заменять в нескольких файлах .txt из терминала?

У меня около 100 файлов .txt, содержащих простой текст. Каким-то образом некоторые из данных были повреждены и их необходимо найти/заменить.

Мне нужно найти символы "-" и заменить его длинной тире: "-".

Есть ли способ сделать это быстро с помощью команды в терминале?

Имена файлов .txt в моем каталоге нумеруются последовательно: 1.txt, 2.txt и т.д.

Спасибо!

4b9b3361

Ответ 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 (см. комментарии и принятый ответ).