我有如下日志,需要使用新格式进行解析:
2018-08-14 12:07:06,410 - MAILER - INFO - Email sent! - (TEMPORARY PASSWORD: cristronaldode ) to ['cristronaldode@eeee.com'] - Message ID: 01010165369da693-216f985f-e1b0-4dc2-bcea-8a2cd275a506-000000 Result: {'MessageId': '01010165369da693-216f985f-e1b0-4dc2-bcea-8a2cd275a506-000000', 'ResponseMetadata': {'HTTPHeaders': {'content-length': '338', 'date': 'Tue, 14 Aug 2018 04:07:05 GMT', 'x-amzn-requestid': '81bbc0c4-9f77-11e8-81fe-8502a68e3b7d', 'content-type': 'text/xml'}, 'RetryAttempts': 0, 'RequestId': '81bbc0c4-9f77-11e8-81fe-8502a68e3b7d', 'HTTPStatusCode': 200}}
输出:
2018-08-14 12:07:06,410|TEMPORARY PASSWORD: cristronaldode|cristronaldode@eeee.com|'HTTPStatusCode': 200|
我正在尝试使用awk和match函数,但不知道如何在1行中使用多重匹配。谢谢
更新:我正在使用此命令来解析字段,但是由于我要按空格分隔字段,因此需要更正所有行中的字段。所以我想要其他解决方案。
awk -F ' ' '{print $1,$2"|"$11,$12,$13,$14,$15,$16,$17,$18,$19"|"$21"|"$48,$49}' | sed -e 's/[()]//g' | sed -e 's/[][]//g'| sed -e 's/}//g'
答案 0 :(得分:0)
awk的字段分隔符可以是正则表达式。
awk -F '[][)(}{ ]*' '{print $1,$2}' file
我们现在在所有括号(例如字符)上定界,并将这些字符的多次出现记为一个。
您可以弄清楚现在必须使用哪些字段。