2011-08-11 15 views
9

Używam edytora tekstów do edycji pliku. Chciałbym usunąć wszystkie wiersze nie zawierające słowa. Oto przykład.Jak używać wyrażenia regularnego do usuwania linii bez słowa?

apple ipad 
hp touch pad 
samsung galaxy tab 
motorola xoom 

Jak mogę usunąć cały wiersz za pomocą bloku słów i uzyskać ten wynik za pomocą wyrażenia regularnego ??

apple ipad 
hp touch pad 

Dzięki wszystkim.

+0

Czy chcesz * usunąć * lub * zachować * wszystkie wiersze ze słowem "pad"? Czy "pad" musi znajdować się na końcu linii, czy gdziekolwiek? – RoToRa

+0

"pad" jest w dowolnym miejscu. Chcę zachować linię z "pad" i usunąć wszystkie pozostałe linie. Odpowiedź Kizu rozwiązała mój problem. Dzięki za pomoc RoToRa. :) –

Odpowiedz

24

Wymień ^(?!.*pad.*).+$ z pustym ciągiem

+0

Dzięki Kizu. To rozwiązało mój problem. :) –

5

nie jestem pewien co robić tego typu rzeczy, używając wyrażeń regularnych, ale można łatwo używać grep to zrobić.

Na przykład, jeśli plik textfile zawiera to:

apple ipad 
hp touch pad 
samsung galaxy tab 
motorola xoom 

Otwórz terminal i uruchom polecenie:

grep pad textfile 

to będzie wyjście to:

apple ipad 
hp touch pad 

Jeśli chcesz zapisać dane wyjściowe do pliku, możesz zrobić coś takiego:

grep pad textfile > filteredfile 
+0

Dzięki daxnitro. To dobre rozwiązanie. Ale odpowiedź Kizu jest lepsza, ponieważ mogę uzyskać wynik dokładnie w środku tekstowym. Ale bardzo dziękuję za pomoc. :) –

2

To wyrażenie wybierze wiersze zawierające pad słowo: ^.*pad.*$

^ znak wskazujący początek linii, postać $ wskazuje koniec i .* pozwala na dowolną liczbę znaków okolicy słowo.

Może to być zbyt szeroki zakres dla Twojego celu w obecnym stanie - potrzebne są bardziej szczegółowe informacje.

+0

Yup. To może uzyskać wszystkie linie za pomocą "pad". Ale chcę usunąć wiersze bez tego słowa. Nie wiedziałem, jak to zrobić wcześniej. Dziękuję za odpowiedź. :) –

+0

Dziękuję za wyjaśnienie znaków w wyrażeniu. – Fred

Powiązane problemy