2013-07-18 13 views
33

Czy istnieje sposób w Notepad ++, aby usunąć wszystkie inne lub n-tą linię? Mam ogromną listę danych i potrzebuję zmniejszyć rozmiar.Usuń wszystkie inne wiersze w notatniku ++

Same dane nie jest tak ważna i z listy 10,000 pozycji Muszę tylko wybór 5,000

+1

Notepad ++ nie ma takiej funkcji, ale pisząc program, który będzie usunąć co drugi wiersz byłby tylko nieliczni długie linie – zoran404

+0

Myślę, że plik wsadowy może być najprostszą opcją w mojej sytuacji. – fightstarr20

Odpowiedz

69

myślę, że to dziwny pomysł, aby spróbować zrobić z Notepad ++, ale lubię wyzwania, więc postanowiłem daj mu spin.

Otwórz menu zamień, wpisz ([^\n]*\n)[^\n]*\n w polu "Znajdź" i $1 w polu "Zamień na". Następnie wybierz wyrażenie regularne dla trybu wyszukiwania, kliknij przycisk Zamień wszystko i co druga linia zostanie usunięta.

Możesz budować podobne wyrażenia regularne, jeśli chcesz zrobić coś podobnego. Na przykład (([^\n]*\n){a})[^\n]*\n zastąpi każdą n-tą linię, jeśli zastąpisz a przez n - 1 i [^\n]*\n([^\n]*\n) pozwoli ci zachować równe linie zamiast nieparzystych.

(To nie było trudno w ogóle - wszystko, co musiałem zrobić, to zmiana mój przestarzały Notepad ++ instalacja).

+0

Dzięki, tak dziwne, jak to było, korzystałem z punktów GPS z aplikacji do śledzenia na moim telefonie, eksportowałem jako KML i importowałem do Litchi Fly Hub dla mnie jednak, był sposób na wiele punktów, a to było w stanie zmniejszyć te i nadal utrzymywać trasę – drooh

0

nie sądzę istnieje funkcja w Notepad ++, który automatycznie usunie każdy inny (lub każdy nth), ale jeśli napisałeś krótki program konwersji, zajmie to tylko kilka minut.

Pseudokod wyglądałby mniej więcej tak:

1. Create a StreamReader and StreamWriter (make sure you are not trying to read from 
    and write to the same file) 
2. While (StreamReader is reading lines) increment i. You could mod it by whatever 
    number n you wanted in order to delete certain lines. Then have a conditional clause 
    that would write out if i%n == 0 or whatever you specify. 
3. Close the program. 

To nie dokładnie odpowiedzieć na to pytanie, ale mam nadzieję, że to pomaga.

5

myślę, że można to zrobić za pomocą awk, jeśli jesteś na platformie w stylu UNIX:

awk 'NR % 2 == 0' file > outfile 

NR jest numer linii, więc będzie to po prostu powiedzieć „jeśli linia jest podzielna przez 2 kijem w pliku nowym. "

Jeśli jesteś na oknach, myślę, że odpowiedź tutaj będzie działać:

batch file to keep one of ten lines

17

Można spróbować użyć makra.

  1. Rozpocznij nagrywanie Makro
  2. Dociśnij n-razy
  3. Naciśnij Shift + End
  4. klawisz Delete dwa razy
  5. Zatrzymaj nagrywanie makra
  6. Uruchom makro do końca pliku
2

Sam natknąłem się na tę kwestię. Co pracował dla mnie, również za pomocą funkcji Znajdź/Zamień funkcję, jest:

  1. Ctrl F i przejdź do Wymienić
  2. W trybie wyszukiwania, wybierz „Extended (\ n \ r, \ t ..)”
  3. sprawdź co: \ n \ n
  4. Replace with:. \ N
  5. Zamień wszystko
+0

Ładne i proste! Musiałem zastąpić "\ r \ n \ r \ n "z" \ r \ n ", ale ta sama koncepcja –

Powiązane problemy