Ich habe eine tabulatorgetrennte Datei wie:
name1 verb1 name2 verb2 etc...
Ich möchte die zweite Spalte löschen. Ich habe versucht, eine dieser Antworten zu bearbeiten , war aber nicht mit sed
und vertraut awk
.
Kann mir jemand helfen?
x
)?Antworten:
In vim sollten Sie den Befehl verwenden können
(Ersatz, TABgefolgt von null oder mehr Vorkommen eines beliebigen Zeichens, außer TABmit nichts). Wenn Ihre Datei nur zwei Spalten enthält, können Sie eine etwas einfachere verwenden
:%s/\t.*
oder:%s/\t.*$
die ersten TABund alle folgenden Zeichen bis zum Ende der Zeile ersetzen .quelle
Die akzeptierte Antwort ist viel eleganter als diese (ich habe sie hochgestuft!), Aber wenn Sie sich nicht daran erinnern, können Sie den
vim
visuellen Block-Modus direkt verwenden. Öffne vim und gehe (normaler Modus) zur ersten Ecke der Spalte, so:Geben
CTRL-V
Sie ein und Sie können den Cursor bewegen, um die Spalte auszuwählen. Dies ist in der Mitte:Um zum Ende zu gelangen, drücken Sie
G
:Der Block scheint kaputt zu sein, weil wir uns in der letzten Zeile befinden, die leer ist. gehe einfach eine Zeile nach oben (mit dem Pfeil nach oben oder
k
), um es wieder zu sehen ...:Jetzt drücken Sie einfach
x
, um den Block zu löschen:quelle
Ich würde
cut
dafür verwendenSie können innerhalb von vim dies als Filter verwenden, auch (dies alle die Zeilen in der Datei ersetzen wird, können Sie auch (zum Beispiel) verwenden könnte ,
2,9
anstatt%
zu Prozesslinien 2-9, oder wählen Sie die Zeilen , die Sie wollen mitV
):-f1,3-
bedeutet "Drucke Feld eins, gefolgt von Feld drei und allen Feldern bis zum Ende der Zeile". Standardmäßigcut
wird ein Tabulator als Begrenzer verwendet. Wenn Sie etwas anderes benötigen, verwenden Sie die-d
Option (sieheman cut
).quelle
Sie können entweder versuchen:
oder manuell im visuellen Modus:
Versuchen Sie Folgendes, um dies direkt von der Befehlszeile aus zu tun:
Verwandte Themen: Wie schreibe ich ein Literal für die Tabulatortaste, um sie für Bewegungen zu verwenden?
Siehe auch:
quelle