0
数据从我的应用程序之一的制表符分隔的日志记录是这样的:在awk或sed的解析从日志文件
Time UserId CustomField CityId
2015-06-16-12:36:39 _v0YurN20wyj5h5QNIfoKA st=prefooter300x253;aa=855677;aam=91363629792766391842337900189790343745;kw=4onews;kw=5vo1bw;kw=671l7s;sqt=4 1023191
2015-06-16-12:00:08 7ovC6FHLKjMxJpiZHvlDGQ st=xrailtop300x250;aam=86662686616919269952594761014252363053;kw=240000;kw=240001;kw=240002;kw=240003;kw=240004;kw=240005;kw=240006;kw=240007;kw=240008;px=240002;px=240003;sov=4;sqt=4 1028057
2015-06-16-12:04:41 ZBV9KBZjMmkOcst7j2r8wA st=yrailtop300x250;aam=67657135077785797411906987077419372156;kw=top_of_the_rock_news;rfsh=0;sov=14;sqt=9 1025202
2015-06-16-13:05:42 ABf9KBZjMmkOcst7j2r8w4 st=yrailtop300x250;aam=95657135077785797411906987077419372142;kw=liquid_cow_found_on_Mars;kw=2305;kw=stars_don't_care_about_astronomy;rfsh=0;sov=14;sqt=9 1025202
2015-06-16-13:05:42 1tf9KBZjMmkOcst7j2r8y2 st=yrailtop300x250;kw=liquid_cow_found_on_Mars;rfsh=0;sov=14;sqt=9 1025202
我需要用awk摄取到数据库之前预先处理。只想保留Time,UserID以及CustomField的一部分(当存在时总是“aam”值,而只有当字符串长于16个字符时才为“kw”值)。我可能会忽略kw部分或稍后处理它。
编辑:所需的输出应该是这样的
Time UserId RecordNo NewsItem1 NewsItem2
2015-06-16-12:36:39 _v0YurN20wyj5h5QNIfoKA aam=91363629792766391842337900189790343745 NA NA
2015-06-16-12:00:08 7ovC6FHLKjMxJpiZHvlDGQ aam=86662686616919269952594761014252363053 NA NA
2015-06-16-12:04:41 ZBV9KBZjMmkOcst7j2r8wA aam=67657135077785797411906987077419372156 kw=top_of_the_rock_news
2015-06-16-13:05:42 ABf9KBZjMmkOcst7j2r8w4 aam=95657135077785797411906987077419372142 kw=liquid_cow_found_on_Mars kw=stars_don't_care_about_astronomy
2015-06-16-13:05:42 1tf9KBZjMmkOcst7j2r8y2 NA kw=liquid_cow_found_on_Mars NA
EDIT2:我接受了答案。按照埃德的建议,我在原始文章中增加了两个不存在的记录,涵盖了不寻常的记录(没有aam值或多个合法kw值)。如果找到多个千瓦值,只有前两个将保持在NewsItem1和NewsItem2,其余的将被忽略
显示您想要的样本输入输出。 – Cyrus