Normal ifade: "Yardım" vb. İçeren satırları kaldırın


371

Uzun bir komut dokümanım var. Notepad ++ veya regex kullanarak, keyboard_help vb. Dahil "yardım" içeren tüm satırları silmek istiyorum.

Bu nasıl yapılabilir?

Yanıtlar:


945

Bu, Notepad ++ ile de mümkündür:

  • Arama menüsüne gidin, Ctrl+ Fve İşaretle sekmesini açın.
  • Kontrol İmi hattını (hayır varsa işaretle geçerli sürüme sekme güncelleme).

  • Arama teriminizi girin ve Tümünü İşaretle'yi tıklayın

    • Arama terimini içeren tüm satırlara yer işareti konur.
  • Şimdi AraYer İşaretiYer İşareti Kaldır satırları menüsüne gidin

  • Bitti.


36
Evet! Ayrıca tam olarak ihtiyacım olan grep gibi 'İşaretlenmemiş Hatları Kaldır' da var!
Chloe

6
Teşekkürler, bu temiz bir numara. Bir Unix konsolunu (çoğunlukla Windows'da olduğumu görmezden gelmek), cdyola atmaktan ve karmaşık bir komut (sözdizimi hakkında endişelenme ve kalıcı olarak vidalama ve sonra fark etme) yazmaktan birkaç basit tıklama ile yapmayı tercih ederim yedek yok). [ Beni yanlış anlamayın, her zaman başka şeyler için konsol komutları kullanıyorum, ama böyle bir şey için bu sadece bir aşırıya kaçma.]
ADTC

2
Bana çok zaman
kazandım

3
kontrol BOOKMARK LINEburada önemlidir aksi takdirde işe yaramaz !.
HaSeeB MiR

1
@ AndrewSchultz, üzgünüm ama hayır.
stema

187

Bunu Notepad ++ ile yapmanın başka bir yolu da Bul / Değiştir iletişim kutusunda ve regex ile:

  • Ctrl+ hbul ve değiştir iletişim kutusunu açar.

  • In Find what:: metin kutusuna sizin regex içerir .*help.*\r?\n( \rdosyası Windows satır sonları yok durumda isteğe bağlıdır).

  • Replace with:Metin kutusunu boş bırakın .

  • Arama Modu alanındaki Normal ifade radyo düğmesinin seçili olduğundan emin olun. Sonra tıklayın Replace Allve voila! Arama teriminizi içeren tüm satırlar helpkaldırıldı.

N ++ 'da Nasıl Yapılır Satırı Değiştirme


17
"Dosyalarda Bul" için yapılabileceğinden, işaret sekmesini kullanmaktan daha iyi yanıt
Alex

2
Ters eğik çizgi ile parantez gibi özel karakterlerden kaçtığınızdan emin olun.
Noumenon

4
". newline ile eşleşir" işaretini
kaldırdığınızdan

1
Daha yüksek performans nedeniyle daha iyi cevap. 1 milyondan fazla satırlı dosyalarda, yer imi yöntemi modern makinelerde de maksimum seviyeye uzatılır.
Roland Ettinger

17

Kolay görev grep:

grep -v help filename

> newFileNameÇıktıyı yeni bir dosyaya yönlendirmek için ekleyin .


Güncelleme

Açıklığa kavuşturmak için, normal davranış çizgileri ekrana yazdırmak olacaktır. Bir dosyaya bağlamak >için kullanılabilir. Böylece, bu komutta:

grep -v help filename > newFileName
  1. grepgrepprogramı çağırıyor , belli ki
  2. -vçıktıyı tersine çeviren bir bayraktır. Varsayılan olarak, grepverilen desene uyan çizgileri yazdırır. Bu bayrakla, desene uymayan çizgiler yazdırılır .
  3. help eşleşecek kalıp
  4. filename girdi dosyasının adı
  5. > çıktıyı aşağıdaki öğeye yönlendirir
  6. newFileName çıktının kaydedileceği yeni dosya.

Fark edebileceğiniz gibi, dosyanızdaki şeyleri silmeyeceksiniz. grepokuyacak ve buna göre başka bir dosya kaydedilecek.


@Kevin Duke: Ne yazık ki! Bu muhtemelen yüklemediğiniz anlamına gelir grep. Her neyse, GNU grep'i yüklemenizi tavsiye ederim, kesinlikle Windows üzerinde çalışacak ve gerçekten kullanışlı bir araç.
sidyll

@sidyll grep'in ne olduğunu biliyordu ve bir sürü çıktı yaptı, bir çıktı dosyası belirtmediğim için olabilirdi
limon

2
@Kevin Duke: Cevabın daha önce söylediğim gibi, çıktı yeniden yönlendirilebilir. Standart davranış ekranda yazdırılır. Yönlendirmek için, bir boru ( >bu durumda) kullanırsınız, son komutunu verirgrep -v help filename > outputFileName
sidyll

Teşekkürler, kesinlikle bunu deneyeceğim!
limon

grep> sed karakterleri bulmak için haftanın herhangi bir günü
kwikness

13

Bunu sed kullanarak yapabilirsiniz: sed '/help/ d' < inputFile > outputFile


4
@CengizFrostclaw: Linux / Mac / Whatever üzerindeki komut satırında. Windows kullanıyorsanız, CygWin gibi bir şey yüklemeniz ve kullanmanız gerekir.
Tikhon Jelvis

Teşekkürler @TikhonJelvis! Ve son bir soru, yardımla başlayan (içermeyen) tüm satırları silmek için sed 'help /' yapabilir miyiz ?
jeff

3
@CengizFrostclaw: Sanırım sed '/^help/ d'işe yaramalı . Bu ^, satırın başlangıcını temsil eder.
Tikhon Jelvis

@jeff PowerShell var sedvegrep
Ooker

cygwin utf-16 dosyaları olan pencerelerde çalışmayabilir. Cygwin yardımcı programları varsayılan olarak UFT-8 kullanır. Çok azı UTF-16'yı destekliyor. Babun babun.github.io kullanın . Cygwin'in etrafında bir sargı görevi görür, ancak kutudan çok fazla şey sağlar.
Sahil Singh


6

Eğer konum Windows üzerinde deneyin findstr. Üçüncü taraf araçlara gerek yoktur:

findstr /V /L "searchstring" inputfile.txt > outputfile.txt

Normal ifadeleri de destekliyor! Sadece aracın yardımını okuyun findstr /?.

Not: Büyük, devasa dosyalarla (400 MB günlük dosyaları gibi) çalışmak istiyorsanız, bir metin düzenleyicisi bellek açısından çok verimli değildir; Ama Windows'ta bir sır yok, bu yüzden ...

Bunu 1 GB günlük dosyasında çalıştırdım ve tam anlamıyla 3 saniye sürdü.

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.