2016-07-21 17 views
1

Ich analysiere einige JSON-Daten und ich bin in der Notwendigkeit, Anfang und Ende geschweifte Klammern entfernen, {}. Ich benutze sed, um diese Operation durchzuführen, aber von dem, was ich sagen kann, geschweifte Klammern führen spezielle Funktionen in sed aus und sie zu entkommen scheint nicht zu funktionieren. Hier sind ein paar Beispiele von dem, was ich versucht habe. Ich könnte wirklich einen regulären Ausdruck verwenden. Danke im Voraus!Verwenden von sed, um geschweifte Klammern zu ersetzen

Das erste, was ich versuchte, funktioniert nicht.

Einige redone Code von einer Antwort, die ich hier gefunden habe.

sed 's/\(\{\|\}\)//g' 
+0

Versuchen Sie, alle '{' s und '}' s oder zu entfernen Zeichenfolge '{}'? Es ist besser, die Beispieleingabe und die gewünschte Ausgabe zur besseren Übersicht zu verwenden. –

+0

@LevLevitsky Ich entferne sie einzeln, von verschiedenen Punkten in den Daten. Es gibt oft keinen Platz zwischen den Zahnspangen und was davor kommt, wenn das wichtig ist. – barefly

Antwort

6

würde ich tr dafür verwenden:

tr -d '{}' < file.json 

Mit sed es sein sollte:

sed 's/[{}]//g' file.json 

[{}] ist ein Charakter-Klasse, die { oder } bedeutet.

Wenn Sie die Datei an seinem Platz ändern passieren die -i Option sed oder sponge Werkzeug aus moreutils verwenden. Ich mag es, weil es allgemein ist, dh es ist unabhängig mit jedem Befehl funktioniert, wenn es an Ort und Stelle Bearbeitung unterstützt oder nicht:

sed 's/[{}]//g' file.json | sponge file.json 
+0

Es hat funktioniert! Vielen Dank! Aus Neugier, was ist die Syntax, um Klammern zu entfernen? – barefly

+0

Es ist 'sed 's/[] [] // g'' :) – hek2mgl

+0

@ hek2mgl Gute Sachen, jetzt habe ich meine Daten genau wie ich es will. – barefly

Verwandte Themen