Aynı anda birkaç farklı değeri bulun ve değiştirin


15

Ben birden çok örneği olan bir dosya var Text_1ve Text1ben de o dizelerle hem değiştirmeniz gerekiyor Text_Ave TextBsırasıyla.

Şu anda her dosyada iki bul ve değiştir işlevini buluyor Text_1ve değiştiriyor Text_Ave diğeri buluyor Text1ve değiştiriyor TextB.

"Bul ve Değiştir" i iki kez çalıştırmak yerine bunu bir kerede yapmanın bir yolu var mı?

Dreamweaver CS3 kullanıyorum, ancak daha kolay olacaksa Notepad ++, normal Not Defteri, OO Writer, MS Word de var. İdeal olarak bunu Dreamweaver veya Notepad ++ ile yapabilirdim ama işi yapmak için başka bir şey indirmeye açıkım. Herhangi bir komut satırı şeyler yapmak veya bir toplu iş dosyası oluşturmak zorunda kalmamayı tercih ediyorum (farkındayken, gerçekten anlamıyorum).

Yukarıdaki açıklama net değilse, bu şekilde açıklayayım ...

Ben çalıştırmak istiyorum Bul ve Değiştir 1 kez de 1 belgesinde ve bunu yapmak istiyorum TÜMÜNÜ bu bir Bul ve Değiştir örneği sırasında aşağıdakilerden:

  1. Bul Text_1 ve Değiştir ileText_A
  2. Bul Text1 ve Değiştir ileTextB

Ben am değil bir Bul yapmak ve birkaç belgeleri karşıya değiştirin çalışıyor.


Farklı bir desen varsa Regexp bul ve değiştir özelliğini kullanmak mümkün olabilir. Başka türlü mümkün değil @matt
Sathyajith Bhat

Yanıtlar:


9

Bir göz atın Sed . Hedefinize yalnızca bir komut satırı ile kolayca ulaşabilirsiniz

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


24

Notepad ++ 6.0 olduğundan, aşağıdaki tekniği kullanarak komut dosyaları olmadan aslında mümkündür:

Bul: Metin_1 ve Şununla değiştir: Metin_A

Bul: Metin2 ve Şununla değiştir: TextB

Bul: (Metin_1) | (Metin2)

Değiştir: (? 1Text_A) (? 2TextB)

Genel sözdizimi:

Find: (FindA)|(FindB)|(FindC)...

Replace: (?1ReplaceA)(?2ReplaceB)(?3ReplaceC)...

? 1 ilk yakalanan ifadeyi ifade eder ve bu böyle devam eder.

Bunu aşağıdaki cevaptan aldım: /programming//a/16104946/287101


3

Notepad ++ kullanarak,

  • Değiştirmek istediğiniz kelimeleri içeren tüm dosyaları açın ve tüm açık dosyalarda Bul / Değiştir işlevini kullanın

    resim açıklamasını buraya girin

  • Dosyalarda Bul / Değiştir'i kullanma

    resim açıklamasını buraya girin

  • Bul ve değiştir seçeneklerini gerçekleştiren bir makro kaydedin ve oynatın


Yapmaya çalıştığım bu değil. Bir kerede birkaç dosyada değiştirmek istemiyorum, tek bir dosyada birkaç dizeyi aynı anda değiştirmek istiyorum. Bir bul ve değiştir çalıştırabilir ve belgede arama ve tüm Text_1 tüm metinlerini Text_A ve Text1 tüm örneklerini TextB ile değiştirmek istiyorum. İki ayrı dize, bir dosyada iki ayrı değerle değiştirildi.
matt

Resim bağlantıları kopuk, onları bir şekilde tamir etme şansınız var mı?
Bobby

2

Bul ve Değiştir'i iki kez çalıştırmanız daha iyi olur, çünkü iki farklı yedeklemeniz olur. Ancak, işlem süresinde çok az ödünleşim olmalıdır. Aşağıdakileri göz önünde bulundur:

Terimi terime göre arayarak Bul ve Değiştir'i bir kez çalıştırmak:

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

Koşma amaçları için, doğrusal olduğunu varsayacağız ve bunun O (n) zamanda çalıştığını söyleyeceğiz.

İki farklı terim bulmak istiyorsunuz. Bul ve Değiştir'i iki kez çalıştırmak şöyle görünür:

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) zaman alır veya bir terimi ararken iki kat daha uzun sürer.

İki değiştirmeli iki terimi aramak teorik olarak şöyle görünür:

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

Terimleri elde etmek o kadar fazla işlem gücü gerektirmez, bu nedenle her terim için iki arama kümesi ararsınız, bir kez O (1x2n) verir, bir kez çalışır ancak iki terimi ararsınız.

Her terimi iki kez yüklememek için biraz zaman kazanacak olsanız da, her terimi iki kez aramak için daha fazla zaman harcarsınız, bu yüzden çok az ödünç verilir ve bu özellik bir terimi tek bir terimle aramaktan daha az sıklıkta kullanılacağından, uygulama geliştiricileri sadece yazmadığını varsayarlar. bu işlevsellik.

PROGRAMÇILAR İÇİN YASAL UYARI: Bu genelleştirilmiş bir örnektir. Daha iyi olduğunu biliyorum ama neden bu özelliğin bulunmadığını göstermeye çalışıyorum.


0

Notepad ++ uygulamasındaki normal ifade desteği oldukça sınırlıdır. Alternatif operatör olmadan, yapmak istediğiniz şeye yaklaşmak gibi bir umut yoktur. Daha sediyi regex desteğine sahip bir düzenleyici kullanmanız gerekir .

Normal ifade sözdiziminde yaygın olarak kullanılan GNU uzantıları şunları içerir:

  • ? sıfır veya bir tür anlamına gelen operatör;
  • | dönüşüm operatörü ("foo | bar", "foo" veya "bar" ile eşleşir)
  • açgözlü için / g veya büyük / küçük harfe duyarlı olmayan / i gibi değiştiriciler;
  • a ve b türlerinin bir türünü belirtmek için {a, b}.
  • (kalıp) + aynı kalıptaki bir veya daha fazla eşleşmeyi işlemek için

Notepad ++ 'ın temelini oluşturan Scitilla bileşeni kesinlikle POSIX uyumludur ve bu uzantıları tanımaz. Tam bir özet ve bazı örnekler için Normal İfadelere başvurabilirsiniz.

Kaynak

Ayrıca bakınız

sedWindows için GNUWin32


0

Toplu bul ve değiştir için TextCrawler kullanıyorum. (Textcrawler'dan daha hızlı olduğu için tek bir arama / değiştirme için Notepad ++ kullanıyorum.) TextCrawler normal ifadeleri ve normal arama / bulmayı destekliyor. Toplu iş dosyaları ileride kullanılmak üzere kaydedilebilir ve yeniden yüklenebilir.


Lütfen bkz. Yanıtlarımda yazılımı nasıl öneririm? Özellikle, minimum düzeyde, yazılımı nereden alacağınızı söyleyin.
G-Man,

Toplu iş işlevi yalnızca TextCrawler'ın ücretsiz olmayan Pro sürümünde kullanılabilir.
Hobbes

0

Ayrıca ActiveX Plugin (Notepad ++ için) kullanılarak ve özel komut dosyası çalıştırılarak da yapılabilir:

NppApplication.activeEditor.text
=NppApplication.activeEditor.text
.replace(/Text_1/g,"Text_A")
.replace(/Text1/g,"TextB")

Bu çalışır, ancak ActiveX Eklentisi'ndeki geçerli bir hata nedeniyle , komut dosyasını her çalıştırdığınızda dosyaya NULL karakter eklendiğini unutmayın.
Aidan

-1

Bu, tüm sayılar için geçerlidir (metindeki / makaledeki tüm sayıları kaldırmak için)

  1. Bul ve Değiştir iletişim kutusunu açmak için Ctrl + H tuşlarına basın.

  2. "Ne bul" kutusuna ^ # yazın

  3. "Şununla değiştir" kutusunu boş bırakın.

  4. Hepsini değiştir.


1
OP sadece sayıların kaldırılmasını istemiyor, aynı zamanda bir harfle değiştirmek istiyorlardı.
booyaa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.