2015-08-13 2 views
-3

У меня есть файл loge, у которого есть строки, строка ниже для него - У меня есть 2 ключа. Первый ключ - под. Id (1112222222) второй ключ - идентификатор сеанса (xxx.apn.com; 2418561818; 846; 60034).Необходима команда grep awk

Подтверждающий идентификатор, мне нужно создать большую команду оболочки для поиска идентификатора сеанса этого поддиректа, а затем выполнить поиск в файле для всех строк, имеющих один из этих ключей или оба из них. Например, строка ниже содержит идентификатор сеанса и пару поддерева.

úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCR received. SessionId: xxx.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 

Ввод Ex.

úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCR received. SessionId: xxx.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 
úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCA received. SessionId: xxx.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 
úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCR received. SessionId: yyy.apn.com;2418561818;846;60034, SubsId: 1113333333, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 
úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCA received. SessionId: yyy.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 

Выход Ex.

úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCR received. SessionId: xxx.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 
úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCA received. SessionId: xxx.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 
úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCA received. SessionId: yyy.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 
+1

Обратите внимание на [edit-help] (http://stackoverflow.com/editing-help). – Cyrus

+0

, пожалуйста, укажите образцы входных данных и соответствующие выходные данные для этого –

+0

. Вы можете проверить это в теле после обновления с помощью образцов –

ответ

0

Непроверено

Чтобы извлечь идентификатор сеанса даной подлодки ID:

subsId=1112222222 
sessionIds=$(grep -oP 'SessionId: [^,]+,(SubsId: $subsId,)' file.log | sort -u) 

Затем извлечь строки с одной из этих сессий идентификаторов:

echo "$sessionIds" | grep -Ff- file.log 
0

Этом будет делать то, что вы хотите, но не будет воспроизводить ожидаемый результат, поскольку это не отражает то, что вы говорите, что вы хотите *:

$ cat tst.awk 
BEGIN { subsid = subsid"," } 
NR==FNR { if ($13 == subsid) sessids[$11]; next } 
($11 in sessids) || ($13 == subsid) 

$ awk -v subsid=1112222222 -f tst.awk file file 
úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCR received. SessionId: xxx.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 
úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCA received. SessionId: xxx.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 
úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCR received. SessionId: yyy.apn.com;2418561818;846;60034, SubsId: 1113333333, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 
úú 3 [ +548] EPC_Log: bi_tspSequenceId=1; i_tspSeverity=6; vc_MessageInformation=CCA received. SessionId: yyy.apn.com;2418561818;846;60034, SubsId: 1112222222, IpAddr: 1.1.1.1, Protocol: Gx, RequestType: Create, APN: apn.com, Event-Trigger: ;i_Priority=6úúûû TelORB: Tue Aug 11 12:26:05 2015, Host:úú Tue Aug 11 12:26:18 2015 

* Почему не все 4 входных линий ожидаются на выходе вы показываете в вашем вопросе?

вашей целевой SubsId 1112222222 связан с SESSIONID xxx.apn.com;2418561818;846;60034 в строках 1 и 2, и с SESSIONID yyy.apn.com;2418561818;846;60034 в строке 4.

Вы говорите, что вы хотите вывести all lines which have one of those keys or both of them. Как и в строке 4, строка 3 имеет SessionId yyy.apn.com;2418561818;846;60034.

Так линий 1,2 и 4 должны быть напечатаны из-за к соответствию SubsId 1112222222 и строка 3 должна быть напечатана для согласования SESSIONID yyy.apn.com;2418561818;846;60034 так SubsId 1112222222 связан с этой SESSIONID на линии 4.

правой?

+0

Спасибо за вашу помощь. Строка 3 не должна соответствовать beacause sessionID yyy не такая же, как sessionID xxx. Я фильтрую строку, у которой есть суб. ID 11122222222 и его идентификатор сеанса, который является xxx Но идентификатор сеанса yyy связан с sub ID 11133333333 –

+0

Но под. ID 11122222222 связан с идентификатором сеанса yyy в строке 'SessionId: yyy ... SubsId: 1112222222'. Как вы решаете, что Subsid 1112222222 должен быть связан только с 'xxx', а не' yyy' для выбора строк для вывода? –

+0

Вы правы. считать, что последний - другой поддирект –