Jak ponownie zamówić kolumny rozdzielane potokami w Notepad ++?


8

Próbuję zmienić pozycję każdej linii w pliku .txt w następujący sposób poniżej. Nie mam jednak pojęcia, jak to zrobić. Czy jest to możliwe w Notepad ++?

Od
apple|apple123@aol.com|orange
celery|celery@aol.com|cabbage
sandwich|sandwich@aol.com|turkey

Do
apple|orange|apple123@aol.com
celery|cabbage|celery@aol.com
sandwich|turkey|sandwich@aol.com


Właśnie to znalazłem, o czym nawet nie wiedziałem, ale wygląda na bardzo przydatne: Edytuj kolumny w Notepad ++ za pomocą wtyczki TextFX
MC10

Nie nazwałbym tego „liniami zmiany pozycji”.
Wyścigi lekkości na orbicie

Odpowiedzi:


15

Ponowne porządkowanie kolumn w pliku tekstowym

Tak, jest to możliwe w wanilii Notepad++, choć, jak wspomniano, istnieją również wtyczki, które to zrobią. Lepszym (bardziej niezawodnym) podejściem może być użycie niektórych narzędzi do przetwarzania tekstu z wiersza poleceń, ale jeśli potrzebujesz szybkiego i brudnego rozwiązania, możesz to znaleźć poniżej:

Zakładając dokładne dane wejściowe ( col1|col2|col3, ogranicznik rury, brak wejścia col2):

Znajdź :(.*?)\|(.*?)\|(.*)

Zamień :\1|\3|\2

działa dla mnie tutaj Notepad++, zbudowany w styczniu 2015 r. Trochę brutalny, ale działa.

Wyjaśnienie:

.* - dopasowuje dowolny znak (oprócz nowej linii), od zera do nieograniczonej liczby razy

.*?- dopasowuje jakikolwiek znak (oprócz nowej linii) jak wyżej, w sposób nie chciwy (tzn. dopasowuje jak najmniej )

(.*)- wsporniki ślizgowe oznaczają grupę przechwytywania grupę z góry (do wykorzystania w wymienić jako przykład \1, \2, \3etc.)

\|- \ucieka potoku ( |), aby dosłownie go dopasować

\1|\3|\2- wydrukuj pierwszą pasującą grupę, potok, trzecią pasującą grupę, potok, drugą pasującą grupę


Cała przyjemność po mojej stronie, cieszę się, że to pomogło i mam nadzieję, że pomoże innym :-) Nie jest to konieczne, ale możesz także kliknąć znacznik wyboru, aby zaakceptować odpowiedź, jeśli rozwiąże to twój problem - możesz tego nie robić, lub czekać też na dodatkowe lepsze odpowiedzi!
bertieb

Czy nie musisz sprawiać, by .*nie był chciwy, tj. .*?Aby uniknąć wielu cofnięć?
Ex Umbris,

@ExUmbris: zazwyczaj optymalizacja rozpoczyna się, gdy prędkość wydaje się nieodpowiednia
souser12345

OTOH celowe pisanie suboptymalnego zapytania ze względu na brak pisania ?znaku wydaje się głupie.
Wyścigi lekkości na orbicie

1
(.*?)|(.*?)|(.*)pracuje dla mnie.
Shaz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.