Найдите и замените несколько несколько различных значений внезапно

У меня есть файл с несколькими экземплярами Text_1 и Text1 и я должен заменить обе тех строки Text_A и TextB соответственно.

В настоящее время я делаю два, Находят и заменяют функции на каждой той файла, которая находит Text_1 и замены это с Text_A и другой, который находит Text1 и замены это с TextB.

Там какой-либо путь состоит в том, чтобы сделать, это внезапно вместо того, чтобы иметь необходимость работать "Находит и заменяет" дважды?

Я использую Dreamweaver CS3, но у меня также есть Блокнот ++, обычный Блокнот, Устройство записи OO, MS Word, если это будет легче. Идеально я мог сделать это в DreamWeaver или Блокноте ++, но я открыт для загрузки чего-то еще, чтобы сделать задание. Я предпочел бы не должным быть делать любой материал командной строки или создавать пакетный файл (в то время как я знаю о нем, я не понимаю это действительно).

В случае, если вышеупомянутое описание не является четким, позвольте мне объяснить это этот путь...

Я хочу работать, Находят и Замена в 1 раз в 1 документе, и я хочу, чтобы это сделало, ВСЕ следующее во время того Находит и экземпляр Замены:

  1. Найти Text_1 и Замена Text_A
  2. Найти Text1 и Замена TextB

Я не пытаюсь сделать Находку и Замену через несколько документов.

14
задан 31.10.2016, 00:08

4 ответа

Смотрите на Sed. Можно легко достигнуть цели только одной командной строкой

sed -e "s/Text_1/TextA/" -e "s/Text1/TextB/" <your_file.txt>your_file_new.txt

10
ответ дан 07.12.2019, 11:12

Используя Блокнот ++, Вы можете также

  • Откройте все файлы, содержащие слова, которые Вы хотите заменить и использовать, Находят / Замена во всех открытых файлах

    enter image description here

  • Используйте Находят / Замена в файлах

    enter image description here

  • Запишите макрос, выполняющий находку, и замените опции и воспроизведите ее

3
ответ дан 07.12.2019, 11:12

Вы - более обеспеченная рабочая Находка и Замена дважды, потому что у Вас есть два других заменяющих случая. Однако во время обработки должно быть очень мало компромисса. Рассмотрите следующее:

Рабочая Находка и Замена однажды, ища почленно:

Get Term
  Does term match?  If so, replace term
Get Next Term
...

В рабочих целях мы предположим, что это линейно, и скажите, что это выполняет в O (n) время.

Вы хотите найти два различных условия. Рабочая Находка и Замена дважды похожи:

Get Term
  Does term match?  If so, replace term
Get Next Term
...

Get Term
  Does term match?  If so, replace term
Get Next Term
...

который взял бы O (2x1n) время или в два раза длиннее, чем поиск одного термина.

Поиск двух условий с двумя заменами был бы теоретически похож:

Get Term
  Does first term match?  If so, replace first term
  Does second term match?  If so, replace second term
Get Next Term
...

Получение условий не берет так много вычислительной мощности, поэтому по существу Вы ищете два набора поисков каждого термина, давая время O (1x2n), работая однажды, но ища два слова.

В то время как Вы сэкономили бы некоторое время, не загружающее каждый термин дважды, Вы проведете больше времени, ища каждое слово дважды, таким образом, будет мало компромисса, и так как эта функция использовалась бы менее часто, чем искание одного слова с одной заменой, разработчики приложений просто принимают не, пишут ту функциональность.

ПРАВОВАЯ ОГОВОРКА ПРОГРАММИСТАМ: Это - обобщенный пример. Я знаю, что это лучше, но я пытаюсь показать, почему та функция не найдена.

2
ответ дан 07.12.2019, 11:12

Поддержка регулярного выражения в Блокноте ++ сильно ограничена. Без оператора чередования нет никакой надежды на ровное близко подхождение, что Вы хотите сделать. Необходимо будет использовать sed или редактор, который имеет лучше regex поддержку.

Наиболее часто используемые расширения GNU синтаксиса регулярного выражения включают:

  • ? оператор, означая нуль или один из вида;
  • | оператор чередования ("foo|bar" соответствует или "нечто" или "панели"),
  • модификаторы как/g для жадного или/i для нечувствительного к регистру;
  • {a, b} для обозначения между a и b маркерами вида.
  • (шаблон) + Маху одно или несколько соответствий того же шаблона

Компонент Scitilla, который подкрепляет Блокнот ++, строго совместим с POSIX и не распознает эти расширения. Можно консультироваться с Регулярными выражениями для полного краткого изложения и некоторых примеров

Источник

См. также

GNUWin32 sed для Windows

0
ответ дан 07.12.2019, 11:12

Теги

Похожие вопросы