2017-07-15 3 views
-2

JSON形式のテキストファイルを作成しています。パターンで始まる行をテキストファイルに保存する

{"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}} 
:あなたは私のデータの2つの行を見ることができますここで「SALES.CONTRACTS.SALECREATED」

{「のMessageType」:私はこのパターンで始まる行だけを維持したいと思います

私のための所望の出力は次のようになります。

{"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、sedのやgrep使用して、私は私の全体のdata.rawファイル、所望のパターンで始まる行だけを維持するために検索することができますか?結果をnew.rawファイルに保存したいと思います。

答えて

0

シンプルawkのアプローチ:

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

試して、同じ上の1つの以上のsedのアプローチ:

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

アプローチをsedの。

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

だから、単にあなたが与えたパターンを検索、-nオプションで行を印刷停止はそれでそのパターンを持っているだけでその行を印刷して印刷する必要があります。

私もシンプルなgrepで試してみましたが、以下のようにうまくいきました。

grep '{"MessageType": "SALES.CONTRACTS.SALECREATED"' Input_file 
関連する問題