SAN*_*QUI 3 unix shell awk grep
我需要从OMO帐户迁移日志中选择两个MSISDN值,并打印不匹配的值。
[2019-03-11 04:15:08 INFO-SUBAPP ESBRestClient:117] ## IP-103.228.158.85##TOKEN-201903110416276787774(**923419606907**)RESPONSE-BODY: {"callStatus":"false","responseCode":"18","description":"OMO account migration – **923481057772**"}
Run Code Online (Sandbox Code Playgroud)
[2019-03-11 04:24:02 INFO-SUBAPP ESBRestClient:117] ## IP-119.153.134.128 ## TOKEN-1552260212780839(923214748517)RESPONSE-BODY:{“ callStatus”:“ false”,“ responseCode”: “ 18”,“说明”:“ OMO帐户迁移– 953214748517”}
923481057772 是旧的MSISDN。
923419606907是新的MSISDN,我需要将其保存在新文件中。我正在使用以下命令仅选择新的MSISDN:
cat migration.txt | egrep "OMO account migration" | egrep "responseCode\":\"1700" | awk -F"(" '{gsub(/\).*/,"",$2);print $2}' >>newmsisdn.txt
Run Code Online (Sandbox Code Playgroud)
我正在使用保存的msisdn值来获取令牌号。然后,我使用这些标记来获取多个参数。最终输出是这样的:
日期时间旧MSISDN新MSISDN旧配置文件新配置文件CNIC Acc状态Acc状态迁移通道(之前)(之后)2019-03-11 | 00:00:14 | 923135260528 | 923029403541 | OMO BVS MA | 0 | 1620221953175 | 活动| | 子应用
2019-03-11 | 00:00:14 | 923135260528 | 923003026654 | OMO BVS MA | 0 | 1620221953175 | 活动| | 子应用
2019-03-11 | 00:00:14 | 923135260528 | 923003026654 | OMO BVS MA | 0 | 1620221953175 | 活动| | 子应用
2019-03-11 | 00:00:14 | 923135260528 | 923038048244 | OMO BVS MA | 0 | 1620221953175 | 活动| | 子应用
在第二个日志实例中,这两个值相同。我需要过滤掉那些,即我只需要使用不匹配的值。如何比较两个不匹配的值并打印新的MSISDN?
尝试:
awk -F'[*][*]' '/OMO account migration/ && /responseCode":"18"/ && $2 != $4 { print $2}' migration.txt
Run Code Online (Sandbox Code Playgroud)
避免了产生多个进程并将它们与管道连接的需求。这使得该方法相对有效。
-F'[*][*]'
这会将场分隔符设置为两颗星。这样,新的MSISDN是字段2,而旧的MSISDN是字段4。
/OMO account migration/ && /responseCode":"18"/ && $2 != $4 { print $4}
这将选择以下行:(1)包含正则表达式OMO account migration/ ,(2)包含正则表达式responseCode":"18" ,(3)第二个字段与第四个字段不同。对于任何这样的行,将打印第二个字段。
让我们考虑这个三行测试文件:
$ cat migration.txt
[2019-03-11 04:15:08 INFO-SUBAPP ESBRestClient:117] ## IP-103.228.158.85##TOKEN-201903110416276787774(**923419606907**)RESPONSE-BODY: {"callStatus":"false","responseCode":"18","description":"OMO account migration – **923481057772**"}
[2019-03-11 04:15:08 INFO-SUBAPP ESBRestClient:117] ## IP-103.228.158.85##TOKEN-201903110416276787774(**923419606888**)RESPONSE-BODY: {"callStatus":"false","responseCode":"19","description":"OMO account migration – **923481057999**"}
[2019-03-11 04:15:08 INFO-SUBAPP ESBRestClient:117] ## IP-103.228.158.85##TOKEN-201903110416276787774(**923419606123**)RESPONSE-BODY: {"callStatus":"false","responseCode":"18","description":"OMO account migration – **923419606123**"}
Run Code Online (Sandbox Code Playgroud)
让我们运行命令:
$ awk -F'[*][*]' '/OMO account migration/ && /responseCode":"18"/ && $2 != $4 {print $2}' migration.txt >>newmsisdn.txt
Run Code Online (Sandbox Code Playgroud)
现在,输出文件包含我们想要的一个新的MSISDN:
$ cat newmsisdn.txt
923419606907
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |