Temukan dan Ganti beberapa nilai yang berbeda sekaligus

14

Saya memiliki file dengan banyak contoh Text_1dan Text1dan saya harus mengganti kedua string tersebut dengan Text_Adan TextBmasing - masing.

Saat ini saya sedang melakukan dua fungsi Find and Replace pada masing-masing file yang menemukan Text_1dan menggantinya Text_Adan yang lainnya menemukan Text1dan menggantinya TextB.

Apakah ada cara untuk melakukan ini sekaligus daripada harus menjalankan "Temukan dan Ganti" dua kali?

Saya menggunakan Dreamweaver CS3, tetapi saya juga memiliki Notepad ++, Notepad reguler, OO Writer, MS Word jika itu akan lebih mudah. Idealnya saya bisa melakukan ini di Dreamweaver atau Notepad ++ tapi saya terbuka untuk mengunduh sesuatu yang lain untuk menyelesaikan pekerjaan. Saya lebih suka tidak harus melakukan hal-hal baris perintah atau membuat file batch (sementara saya menyadarinya, saya benar-benar tidak mengerti).

Jika uraian di atas tidak jelas, izinkan saya menjelaskannya dengan cara ini ...

Saya ingin menjalankan Find & Replace 1 kali dalam 1 dokumen dan saya ingin melakukan SEMUA hal berikut selama satu instance Find & Replace:

  1. Temukan Text_1 dan Ganti denganText_A
  2. Temukan Text1 dan Ganti denganTextB

Saya tidak mencoba melakukan Temukan dan Ganti di beberapa dokumen.

matt
sumber
Mungkin saja menggunakan Regexp find dan ganti jika ada pola yang berbeda. Kalau tidak, itu tidak mungkin @matt
Sathyajith Bhat

Jawaban:

10

Lihatlah Sed . Anda dapat dengan mudah mencapai tujuan Anda hanya dengan satu baris perintah

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

Tuan Anh Hoang-Vu
sumber
23

Karena Notepad ++ 6.0 sebenarnya dimungkinkan tanpa skrip menggunakan teknik berikut:

Temukan: Text_1 dan Ganti dengan: Text_A

Temukan: Text2 dan Ganti dengan: TextB

Temukan: (Text_1) | (Text2)

Ganti: (? 1Teks_A) (? 2TeksB)

Sintaks umumnya adalah:

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

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

? 1 merujuk pada frasa yang pertama kali ditangkap dan seterusnya.

Saya mendapatkan ini dari jawaban berikut: /programming//a/16104946/287101

rakaloof
sumber
3

Menggunakan Notepad ++, Anda bisa

  • Buka semua file yang berisi kata-kata yang ingin Anda ganti dan gunakan Cari / Ganti di semua file yang terbuka

    masukkan deskripsi gambar di sini

  • Gunakan Temukan / Ganti dalam file

    masukkan deskripsi gambar di sini

  • Rekam makro melakukan pencarian dan mengganti opsi dan memutarnya kembali

Sathyajith Bhat
sumber
Bukan itu yang saya coba lakukan. Saya tidak ingin menggantinya pada beberapa file sekaligus, saya ingin mengganti beberapa string dalam satu file sekaligus. Saya ingin dapat menjalankan satu temukan dan ganti dan minta dokumen itu dicari dan ganti semua instance dari Text_1 dengan Text_A dan semua instance dari Text1 dengan TextB. Dua string terpisah diganti dengan dua nilai terpisah dalam satu file.
matt
Tautan gambar terputus, apakah Anda dapat memperbaikinya?
Bobby
2

Anda lebih baik menjalankan Cari & Ganti dua kali, karena Anda memiliki dua penggantian berbeda yang terjadi. Namun, harus ada sedikit tradeoff dalam waktu pemrosesan. Pertimbangkan yang berikut ini:

Menjalankan Cari & Ganti sekali, mencari istilah dengan istilah:

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

Untuk tujuan berjalan, kami akan menganggapnya linear dan mengatakan bahwa ini berjalan dalam waktu O (n).

Anda ingin menemukan dua istilah yang berbeda. Menjalankan Cari & Ganti dua kali terlihat seperti:

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

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

yang akan membutuhkan waktu O (2x1n), atau dua kali selama mencari satu istilah.

Mencari dua istilah dengan dua penggantian secara teoritis akan terlihat seperti:

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

Mendapatkan istilah tidak membutuhkan banyak kekuatan pemrosesan, jadi pada dasarnya Anda mencari dua set pencarian untuk setiap istilah, memberikan waktu O (1x2n), berjalan sekali tetapi mencari dua istilah.

Meskipun Anda akan menghemat waktu tidak memuat setiap istilah dua kali, Anda akan menghabiskan lebih banyak waktu mencari setiap istilah dua kali, jadi ada sedikit tradeoff, dan karena fitur ini akan lebih jarang digunakan daripada mencari satu istilah dengan satu penggantian, pengembang aplikasi hanya menganggap tidak menulis fungsi itu.

DISCLAIMER TO PROGRAMMERS: Ini adalah contoh umum. Saya tahu ini lebih baik tetapi saya mencoba menunjukkan mengapa fitur itu tidak ditemukan.

Theo
sumber
0

Dukungan ekspresi reguler di Notepad ++ sangat terbatas. Tanpa operator pergantian, tidak ada harapan bahkan mendekati apa yang ingin Anda lakukan. Anda perlu menggunakan sedatau editor yang memiliki dukungan regex yang lebih baik.

Ekstensi GNU yang umum digunakan untuk sintaks ekspresi reguler meliputi:

  • itu? operator, artinya nol atau sejenisnya;
  • itu | operator alternatif ("foo | bar" cocok dengan "foo" atau "bar")
  • pengubah seperti / g untuk serakah atau / i untuk case-insensitive;
  • {a, b} untuk menunjukkan antara a dan b token sejenis.
  • (pola) + ke mach satu atau lebih kecocokan dari pola yang sama

Komponen Scitilla, yang menopang Notepad ++, sangat kompatibel dengan POSIX dan tidak mengenali ekstensi ini. Anda dapat berkonsultasi dengan Ekspresi Reguler untuk ikhtisar lengkap dan beberapa contoh

Sumber

Lihat juga

GNUWin32 seduntuk Windows

Dijeda sampai pemberitahuan lebih lanjut.
sumber
0

Saya menggunakan TextCrawler untuk menemukan dan mengganti batch. (Saya menggunakan Notepad ++ untuk pencarian tunggal / ganti banyak file karena ini lebih cepat daripada Textcrawler.) TextCrawler mendukung ekspresi reguler serta pencarian / temukan normal. File batch dapat disimpan dan dimuat ulang untuk digunakan di masa depan.

Chris
sumber
Silakan lihat Bagaimana cara saya merekomendasikan perangkat lunak dalam jawaban saya? Secara khusus, minimal, katakan di mana mendapatkan perangkat lunak.
G-Man Mengatakan 'Reinstate Monica'
Fungsi batch hanya tersedia di TextCrawler versi Pro yang tidak bebas.
Hobbes
0

Juga dapat dilakukan dengan menggunakan Plugin ActiveX (untuk Notepad ++) dan menjalankan skrip khusus:

NppApplication.activeEditor.text
=NppApplication.activeEditor.text
.replace(/Text_1/g,"Text_A")
.replace(/Text1/g,"TextB")
Valeryan
sumber
Ini berfungsi, tetapi perhatikan bahwa karena bug saat ini di Plugin ActiveX karakter NULL ditambahkan ke file setiap kali Anda menjalankan skrip.
Aidan
-1

Ini berfungsi untuk semua angka (untuk menghapus semua angka dari teks / artikel)

  1. Tekan Ctrl + H untuk membuka dialog Temukan dan Ganti.

  2. Di kotak "Temukan apa", ketik ^ #

  3. Biarkan kotak "Ganti dengan" kosong.

  4. Menggantikan semua.

Dennis Smith
sumber
1
OP tidak hanya ingin nomor dihapus, mereka ingin menggantinya dengan surat.
booyaa