Mam plik z wielu wystąpień Text_1
i Text1
i muszę wymienić obie te struny Text_A
i TextB
odpowiednio.
Obecnie wykonuję dwie funkcje Znajdź i zamień na każdym pliku, który znajduje Text_1
i zastępuje go, Text_A
a drugi znajduje Text1
i zastępuje go TextB
.
Czy jest jakiś sposób na zrobienie tego wszystkiego naraz zamiast konieczności dwukrotnego uruchomienia „Znajdź i zamień”?
Używam Dreamweaver CS3, ale mam też Notepad ++, zwykły Notepad, OO Writer, MS Word, jeśli będą one łatwiejsze. Idealnie mógłbym to zrobić w Dreamweaver lub Notepad ++, ale jestem otwarty na pobranie czegoś innego, aby wykonać zadanie. Wolałbym nie robić żadnych rzeczy z wiersza poleceń ani tworzyć pliku wsadowego (choć jestem tego świadomy, tak naprawdę nie rozumiem).
Jeśli powyższy opis nie jest jasny, pozwól mi wyjaśnić go w ten sposób ...
Chcę uruchomić Znajdź i zamień 1 raz w 1 dokumencie i chcę, aby wykonał WSZYSTKIE następujące czynności w tym jednym wystąpieniu Znajdź i zamień:
- Znajdź
Text_1
i Zamień zText_A
- Znajdź
Text1
i Zamień zTextB
Ja nie próbuje zrobić Znajdź i zamień w poprzek kilka dokumentów.
Odpowiedzi:
Spójrz na Sed . Możesz łatwo osiągnąć swój cel za pomocą tylko jednej linii poleceń
sed -e "s/Text_1/TextA/" -e "s/Text1/TextB/" <your_file.txt>your_file_new.txt
źródło
Od Notepad ++ 6.0 jest to faktycznie możliwe bez skryptów wykorzystujących następującą technikę:
Znajdź: (Text_1) | (Text2)
Zamień: (? 1Text_A) (? 2TextB)
Ogólna składnia to:
? 1 odnosi się do pierwszej przechwyconej frazy i tak dalej.
Otrzymałem to z następującej odpowiedzi: /programming//a/16104946/287101
źródło
Za pomocą Notepad ++ możesz albo
Otwórz wszystkie pliki zawierające słowa, które chcesz zastąpić, i skorzystaj z funkcji Znajdź / Zamień we wszystkich otwartych plikach
Użyj Znajdź / Zamień w plikach
Zapisz makro wykonujące opcje znajdowania i zamiany i odtwórz je
źródło
Lepiej dwa razy uruchom Znajdź i zamień, ponieważ zdarzają się dwie różne zamiany. Jednak czas przetwarzania powinien być bardzo niewielki. Rozważ następujące:
Uruchamianie funkcji Znajdź i zamień raz, wyszukiwanie według terminu:
Do celów związanych z biegiem założymy, że jest liniowy i powiemy, że działa on w czasie O (n).
Chcesz znaleźć dwa różne terminy. Dwukrotne uruchomienie funkcji Znajdź i zamień wygląda następująco:
co zajęłoby czas O (2x1n) lub dwa razy więcej niż szukanie jednego terminu.
Wyszukiwanie dwóch terminów z dwoma zamiennikami teoretycznie wyglądałoby:
Uzyskanie haseł nie wymaga tak dużej mocy obliczeniowej, więc zasadniczo szukasz dwóch zestawów wyszukiwań dla każdego terminu, dając czas O (1x2n), uruchamiając się raz, ale szukając dwóch haseł.
Chociaż zaoszczędziłbyś trochę czasu, nie ładując każdego terminu dwa razy, poświęciłbyś więcej czasu na wyszukiwanie każdego terminu dwa razy, więc jest niewielki kompromis, a ponieważ ta funkcja byłaby używana rzadziej niż wyszukiwanie jednego terminu z jednym zamiennikiem, twórcy aplikacji zakładają, że nie piszą ta funkcjonalność.
źródło
Obsługa wyrażeń regularnych w Notepad ++ jest poważnie ograniczona. Bez operatora naprzemiennego nie ma nawet nadziei, że zbliżysz się do tego, co chcesz zrobić. Musisz użyć
sed
lub edytora, który ma lepszą obsługę wyrażeń regularnych.Źródło
Zobacz też
GNUWin32
sed
dla Windowsźródło
Używam TextCrawler do wyszukiwania partii i zamiany. (Używam Notepad ++ do pojedynczego wyszukiwania / zamiany wielu plików, ponieważ jest szybszy niż Textcrawler.) TextCrawler obsługuje wyrażenia regularne, a także normalne wyszukiwanie / wyszukiwanie. Pliki wsadowe można zapisać i ponownie załadować do wykorzystania w przyszłości.
źródło
Można to również zrobić za pomocą wtyczki ActiveX (dla Notepad ++) i wykonania skryptu niestandardowego:
źródło
Działa to dla wszystkich liczb (aby usunąć wszystkie liczby z tekstu / artykułu)
Naciśnij Ctrl + H, aby otworzyć okno dialogowe Znajdź i zamień.
W polu „Znajdź co” wpisz ^ #
Pozostaw pole „Zamień na” puste.
Zamień wszystko.
źródło