2017-12-22 5 views
0

Ich möchte Leerzeichen zwischen meinen geschweiften Klammern hinzufügen, wenn Inhalt in den Klammern ist. Zum Beispiel würde Ich mag die folgende ZeileLinux Substitution: Fügen Sie Leerzeichen zwischen Klammern in einer Datei mit sed

sorted ([] if interfaces is None else list(interfaces[temp]))) 

zu

sorted ([] if interfaces is None else list(interfaces[ temp ]))) 

ich in Vim zu verwenden, ich versuche ersetzen sed, aber ich bin nicht in der Lage die Regex korrekt zu erhalten. Hat jemand eine Vorstellung von dem Muster, das benötigt wird, um das zu lösen?

+0

Haben Sie versucht, Lookaheads usw.? https://www.inputoutput.io/lookbehind-lookahead-regex-in-vim/ –

Antwort

2

in Vim wäre es die folgenden zwei Befehle sein:

:%s/(\([)]\)\@!/(/g 
:%s/\([ (]\)\@<!)/)/g 
-1
$ a="sorted ([] if interfaces is None else list(interfaces[temp])))"; echo $a | sed -r 's/\(/\(/g;s/\)/ \)/g' 
sorted ([] if interfaces is None else list(interfaces[temp]))) 

sed jedes ersetzen '(' Hinzufügen Leerzeichen nach: '(' und jeden ") Zusatz von Leerzeichen vor: ')'

Verwandte Themen