【发布时间】:2013-04-12 12:06:31
【问题描述】:
寻找使用 awk 记录进行解析的解决方案,其中,within 也可以是 /n 字符。记录以| 分隔。问题是当达到一定数量的字段时可以确定新行。如何在 awk 中做到这一点?
例子:
2013-03-24 15:49:40.575175 EST|aaa|tsi|p1753|th2056569632|172.30.10.212|56809|2013-03-24 15:49:32 AFT|10354453|con2326|cmd7|seg-1||dx318412|x10354453|sx1|LOG: |00000|statement: SET DATESTYLE = "ISO"; Select *
from bb
where cc='1'||||||SET DATESTYLE = "ISO"; Select * from bb where cc='1'|0||postgres.c|1447|
2013-04-10 12:45:48.277080 EST|aa|tsi|p22814|th1093698336|172.30.0.186|3304|2013-04-10 12:44:29 AFT|10400046|con67|cmd5|seg-1||dx341|x10400046|sx1|LOG: |00000|statement: create table xx as (select r.xx,sum(r."XX"),c.dd from region_RR r, cat_CC c
where r.aa=c.vv
group by 1)||||||create table xx as (select r.xx,sum(r."XX"),c.dd from region_RR r, cat_CC c
where r.aa=c.vv
group by 1)
|0||postgres.c|1447|
是一条记录,它有许多 \n 字符。我需要用 awk 解析并从中获取例如第 5 个字段。
【问题讨论】:
-
我假设每个文件会有多个记录?你能提供一个更大的样本吗?我不会使用
awk来解决这个问题。awk约束有什么特殊原因吗? -
就像@MattH 所说,请提供至少 2 条记录的输入,它们可能是固有的记录分隔符,例如空行?
-
请发布给定输入的预期输出,并确认相关输入的格式与您的实际文件相同。