【发布时间】:2016-08-25 23:25:37
【问题描述】:
我有一个很大的日志文件,我需要从中提取一些特定的数据,更准确地说,是重复出现的不同字段的值,即我需要从许多 CDR 中获取一些信息,例如呼叫类型,始发编号等
原文格式如下:
Reason Code:"XXX", Result Code:XXX, Desc: "XXX"
..
A_NUMBER.ADDRESS = XXX
..
使用 egrep 我设法获得了所需的行,看起来像:
Reason Code:"XXX", Result Code:XXX, Desc: "XXX"
RECORD_IDENTIFICATION.FILE_ID: XXX
A_NUMBER.ADDRESS = XXX
Call is from XXXX, VDATE=XXXX.
但我无法将它们格式化为表格样式,按 Reason、File_ID、A_Num 和 Call Date 分组,充当列标题, 喜欢
Reason Code | File_ID | A_Number | Date
xxxx | xxxx | xxxx | xxxx |
我对外观不是很感兴趣,我只是希望元素是连续的,以便属于同一个调用。
我弄乱了 awk、sed 和 printf 的不同变体,但似乎没有任何效果。
我试图将总字符值作为参数放在 printf 中
printf "%-205s\n" $(grep -E 'Reason Code|RECORD_IDENTIFICATION.FILE_ID|A_NUMBER.ADDRESS|Call is from' file.err)
或
printf "%-65s | %-65s | %-65s | %-65s" $(grep -E 'Reason Code|RECORD_IDENTIFICATION.FILE_ID|A_NUMBER.ADDRESS' file.err | awk 'FS = "\n" {print $1}')
但输出中的值是乱码且无法使用。
在我看来,解决方案可能存在于某种 awk 似乎支持的循环中,但我无法解决。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
Edit 您的问题向我们展示您的示例输入和相应所需输出的最小示例。如果您尝试过,请也向我们展示。