2017-07-15 2 views
-2

Ich arbeite an einer Textdatei im JSON-Format. Ich möchte nur die Zeilen halten, die mit diesem Muster beginnen:Halten Sie die Zeilen mit einem Muster in einer Textdatei

{ „Message“: „SALES.CONTRACTS.SALECREATED“

Hier können Sie zwei Zeilen meiner Daten sehen:

{"MessageType": "SALES.CONTRACTS.HOLDCREATED", "Event": {"Id": "ZWbDoMKQw6HDjFzCo8KuwpNmwofCjl7Co8OPwpDCncOSXMOdccKTZVVWZWbCnA==", "RefInfo": {"TenantId": {"Id": "ZMKXwpbClsOhwpNiw5E="}, "UserId": {"Id": "wpzCksKWwpbCpMKTYsKeZMKZbA=="}, "SentUtc": "2013-04-28T16:59:48.6698042", "Source": 1}, "ItemId": {"Id": 116228}, "Quantity": 1, "ExpirationDate": "2013-04-29T03:59:44.241", "Description": null}} 

{"MessageType": "SALES.CONTRACTS.SALECREATED", "Event": {"Id": {"Source": 1, "SourceId": "ZGA=-3-1-002-0801743-2330650"}, "RefInfo": {"TenantId": {"Id": "ZGA="}, "UserId": {"Id": "ZGY="}, "SentUtc": "2013-01-14T15:39:03.5237879", "Source": 1}, "Status": {"Status": 3, "AutoRemoveInfo": null}, "Items": {"Items": [{"Id": {"Id": 1193}, "Sku": {"Sku": "Con BM20"}, "Quantity": 1, "UnitPrice": {"amount": 11.92, "currency": 840}}], "FulfilledItems": []}, "ShippingInfo": {"Carrier": "", "Class": "", "Region": null, "Country": 0, "PostalCode": null, "Costs": null, "Charges": null}, "SaleDate": "2013-01-13T13:39:57", "Kits": null, "Products": null, "AdditionalSaleInfo": null}} 

die gewünschte Ausgabe für mich sein wird:

{"MessageType": "SALES.CONTRACTS.SALECREATED", "Event": {"Id": {"Source": 1, "SourceId": "ZGA=-3-1-002-0801743-2330650"}, "RefInfo": {"TenantId": {"Id": "ZGA="}, "UserId": {"Id": "ZGY="}, "SentUtc": "2013-01-14T15:39:03.5237879", "Source": 1}, "Status": {"Status": 3, "AutoRemoveInfo": null}, "Items": {"Items": [{"Id": {"Id": 1193}, "Sku": {"Sku": "Con BM20"}, "Quantity": 1, "UnitPrice": {"amount": 11.92, "currency": 840}}], "FulfilledItems": []}, "ShippingInfo": {"Carrier": "", "Class": "", "Region": null, "Country": 0, "PostalCode": null, "Costs": null, "Charges": null}, "SaleDate": "2013-01-13T13:39:57", "Kits": null, "Products": null, "AdditionalSaleInfo": null}} 

awk verwenden, sed oder grep, wie kann ich meine ganze data.raw Datei suche nur die Zeilen zu halten, die mit dem gewünschten Muster beginnen? Ich möchte das Ergebnis in einer neuen.raw-Datei speichern.

Antwort

0

Einfacher awk Ansatz:

awk '/"MessageType": "SALES\.CONTRACTS\.SALECREATED"/' inputfile > newfile 

sed Ansatz:

sed '/"MessageType": "SALES\.CONTRACTS\.SALECREATED"/!d' inputfile > newfile 
0

versuchen, noch ein sed Ansatz auf gleich.

sed -n '/{"MessageType": "SALES.CONTRACTS.SALECREATED"/p' Input_file 

stoppen So einfach Drucken der Linien mit der Option -n, dann für Muster suchen Sie gegeben haben, gedruckt und das Drucken nur diese Linie werden sollte, die dieses Muster in ihm hat.

Ich versuchte mit einfachen grep auch und es funktionierte für mich erfolgreich wie folgt.

grep '{"MessageType": "SALES.CONTRACTS.SALECREATED"' Input_file 
Verwandte Themen