2017-07-02 5 views
2

ich eine CSV-Dateien in VIM haben, die wie folgt aussieht:Suchen und entfernen Sie alle Klammern Daten in VIM

aaa,bbb,ccc (Friday, 23/06/17) 
ddd,eee,fff (Saturday, 24/06/17) 
ggg,hhh,iii (Sunday, 25/06/17) 

würde Ich mag alle Klammern & seinen Inhalt löschen wie folgt aussehen:

aaa,bbb,ccc 
ddd,eee,fff 
ggg,hhh,iii 

ich habe dies zu tun versucht, aber es löscht nur die Klammer

:%s/(*)//g 

Antwort

6

Sie fast es hatte, du bist das fehlende .:

:%s/(.*)//g 

Der Punkt alle Zeichen übereinstimmt, so .* Mittel, um alle Zeichenketten beliebiger Länge

bearbeiten finden mit:

Als sundeep angegeben, g wenn für die Übereinstimmung aller Vorkommen in der gleichen Zeile und .* wird gierig von der ersten ( bis zur letzten ) in der Zeile übereinstimmen, so wird es nicht ein anderes t sein o in der gleichen Zeile übereinstimmen, so dass es entfernt werden kann. Sie können nur einfache Klammerpaare mit ([^(]*) abgleichen, was bedeutet, dass Sie eine Zeichenkette ohne ( finden, die von () umgeben ist. So ist der modifizierte Vorschlag ist, zu verwenden:

:%s/([^(]*)//g 
+1

Das stimmt! Danke für Ihre Hilfe! – astrasleepz

+0

oder nur ':% s /(.*)' als 'g' Flag ist in diesem Regex unwirksam – Sundeep

+0

Warum ist' g' unwirksam? – EarthDragon

2

:%s/(.*)//g oder da( aus dem Inneren des () für jede Zeile, wenn Sie beabsichtigen, einige verlassen, andere zu löschen.

+0

oder ':% norm f (da)' ... das 'g' Flag wird nicht benötigt mit gierigem Regex .. es wird' 1 3 (foo) und (bar) 'zu' 1 3' unabhängig von ' g' flag ... verwende in solchen Fällen ':% s/([^)] *) // g' – Sundeep

Verwandte Themen