2017-09-16 1 views
-1

Haben Sie eine Idee, wie Sie eine Datei lesen und Text von Werten erhalten?Bash Datei lesen und Werte von bis

Lasst uns sagen, dass ich

Json info lastActiveTimes:{"707514313":1505584723,"100004389551456":1505591385},chatNotif:0}, a lot of more Json info. 

haben Und ich will von Anfang bekommen: Bis zum Ende, also die Datei lesen und zurück nur

{"707514313":1505584723,"100004389551456":1505591385} 

Ich bin von OSX mit bash

+1

Mit dem Paket 'jq' (json query) können Sie json besser parsen. (Wie Sie anhand zusätzlicher JSON-Informationen sehen können, bevor Ihr Beispiel Probleme verursacht). Das heißt, mit "sed" oder "grep" kann PCRE den Inhalt der geschweiften Klammern abrufen. –

+0

Danke Ich weiß jq, aber ich fürchte, diese Quelle ist nicht nur JSON, sondern auch HTML. – paul

+0

[OP-Kommentare zeigen an, dass es mehr als einen json-Klammerblock gibt] (https://stackoverflow.com/questions/46258581/bash-read-file-and-get-values-from-to#comment79486880_46258713), (* ie *: '{...}'), daher ist diese Frage vage und muss angeben, welcher Klammerblock gewünscht ist. – agc

Antwort

1

Mit GNU grep und Perl regular expression (-P):

grep -Poz '(?<=Start:).*(\n)*.*(?= End)' file 

Ausgang:

 
aaaaaaaaaabbbbbbbb 
ccccccc 
+0

Nicht in der Lage, es funktioniert, gab mir einen Grep-Befehlsfehler, ich aktualisiere meine Frage mit den echten Daten jetzt. Danke – paul

+0

Ich habe Perl nicht regelmäßig ausgedrückt, irgendeine Idee, wie man es ohne es macht? – paul

2

Wenn Sie 2nd line with start in it zwischen Anfang und Ende haben, Sie

sed -n '/Start:/,/End/p' file| sed '1s/.*Start://; $s/End.*//' 

UPDATE verwenden können: Frage es so etwas wie

sed 's/.*\({[^}]*}\).*/\1/' file 
sein kann hat sich geändert, jetzt

von

grep -Eo "{[^}]*}" file 
+0

Nicht in der Lage, es funktioniert, gab mir einen Grep-Befehlsfehler, ich aktualisiere meine Frage jetzt mit den echten Daten. Danke – paul

+0

Funktioniert nicht, weil es Json-Informationen vor und nach dem Beispiel gibt, das ich einfügen kann. Ich aktualisiere meine Frage, sorry, um nicht in erster Linie klar zu schaffen. – paul

+0

Ich sehe, Sie haben eine Antwort auf Ihre ähnliche Frage https://StackOverflow.com/q/46262713/3220113 akzeptiert, so denke ich, dass Sie verbleibende Probleme selbst lösen können. –

Verwandte Themen