こんにちはスタックオーバーフロー!
2 つの異なるパターンに一致するすべてのレコードをエクスポートしようとしている非常に大きなフラット ファイルがあります。問題は、各レコードの行数が異なり、レコードが互いにブリードすることです。レコードの最後の行は Door ID で、最初の行は User: です。
メール アドレスの @ に対してテストを行っていますが、最後のログインに「ログイン時間: 2013-08」が含まれています。メールアドレス行と最終ログイン行を含むすべての行をエクスポートする必要があります。以下は2つのサンプルです。私は awk を次のように使用してみました:
awk '/login time: 2013-08/{e=0}/@ /{gsub("^.*@ ","",$0);e=1}{if(e==1){print}}' filename
そしてもちろん失敗…。
ここにサンプルデータがあります
User: afshin@runners.org
First Name: Afshi
Last Name: Noghami
Is Delegated Admin: False
IP Whitelisted: False
Account Suspended: False
Must Change Password: False
Unique ID: 102209840259208897543
ID TPYE: Cx4
Creation Time: 2013-06-07T04:14:42.000Z
Last login time: Never
Path: /Members/Inactive
IMs:
Addresses:
Organizations:
Phones:
Relations:
Door IDs:
User: jjnalli@runners.org
First Name: JISS
Last Name: NALLIKUZHY
Is a Super Admin: False
Is Delegated Admin: False
Has Agreed to Terms: True
IP Whitelisted: False
Account Suspended: False
Must Change Password: False
Unique ID: 109765147242431344122
ID TYPE: Cx4
Mailbox setup: True
Included: False
Creation Time: 2013-06-07T03:32:52.000Z
Last login time: 2013-08-02T07:13:02.000Z
Path: /Members/Inactive
IMs:
Addresses:
Organizations:
Phones:
Relations:
Door IDs:
最終ログイン日を持つ各レコードの望ましい出力は、次のようになります。
User: jjnalli@runners.org
First Name: JISS
Last Name: NALLIKUZHY
Is a Super Admin: False
Is Delegated Admin: False
Has Agreed to Terms: True
IP Whitelisted: False
Account Suspended: False
Must Change Password: False
Unique ID: 109765147242431344122
ID TYPE: Cx4
Mailbox setup: True
Included: False
Creation Time: 2013-06-07T03:32:52.000Z
Last login time: 2013-08-02T07:13:02.000Z