Mam plik rozdzielany tabulatorami, taki jak:
name1 verb1 name2 verb2 etc...
Chcę usunąć drugą kolumnę. Próbowałem edytować jedną z tych odpowiedzi , ale nie znałem sed
i awk
nie mogłem.
Czy ktoś może mi pomóc?
x
chcesz usunąć)?
Mam plik rozdzielany tabulatorami, taki jak:
name1 verb1 name2 verb2 etc...
Chcę usunąć drugą kolumnę. Próbowałem edytować jedną z tych odpowiedzi , ale nie znałem sed
i awk
nie mogłem.
Czy ktoś może mi pomóc?
x
chcesz usunąć)?
Odpowiedzi:
W vimie powinieneś być w stanie użyć polecenia
:%s/\t[^\t]*//
(zamień, TABpo której następuje zero lub więcej wystąpień dowolnego znaku, TABz wyjątkiem niczego). Jeśli twój plik ma tylko dwie kolumny, możesz użyć nieco prostszego :%s/\t.*
lub :%s/\t.*$
zastąpić pierwszy TABi dowolne kolejne znaki do końca linii.
Przyjęta odpowiedź jest znacznie bardziej elegancka (głosowałem!), Ale jeśli jej nie pamiętasz, możesz bezpośrednio użyć vim
trybu blokowania wizualnego . Otwórz vim i przejdź (w trybie normalnym) do pierwszego rogu kolumny, tak jak poniżej:
Wpisz CTRL-V
i możesz przesunąć kursor, aby wybrać kolumnę, jest to w połowie:
Aby przejść na koniec, naciśnij G
:
blok wydaje się uszkodzony, ponieważ znajdujemy się w ostatnim pustym wierszu; po prostu przejdź w górę o jedną linię (strzałką w górę lub k
), aby zobaczyć ją ponownie ...:
Teraz wystarczy nacisnąć, x
aby usunąć blok:
Użyłbym cut
do tego
cut -f1,3- file.txt > newfile.txt
mv newfile.txt file.txt
Możesz użyć tego jako filtru w vimie (spowoduje to zastąpienie wszystkich linii w pliku; możesz także użyć (na przykład) 2,9
zamiast %
do przetwarzania linii 2-9 lub wybrać linie, które chcesz V
):
:%!cut -f1,3-
-f1,3-
oznacza „wydrukuj pole pierwsze, a następnie pole trzecie i wszystkie pola do końca wiersza”. Domyślnie cut
używa tabulatora jako ogranicznika; jeśli potrzebujesz czegoś innego, skorzystaj z -d
opcji (patrz man cut
).
Możesz spróbować:
:%norm WdW
lub ręcznie za pomocą trybu wizualnego:
Aby to zrobić w miejscu z wiersza polecenia, spróbuj:
$ ex +':exe ":%norm f\<Tab>dE"' -scx file
Powiązane: Jak napisać literał dla klawisza Tab do użycia w ruchu?
Zobacz też: