我想就以下几点向你提出建议。我有一个包含多种类型消息的大日志文件,但我只需要 grep 始终如下所示的以下消息类型:
2015-03-05 15:00:05,294 abcdefgddd {
msgType: abcsefg
gggggg {
sendingTime: 1425567605270
xxxx:
yyy {
timestamp: 1425567605211
zzz:
qqq:
vvv:
}
yyy {
timestamp: 1425567605211
zzz:
qqq:
vvv:
}
aaa {
timestamp: 1425567605211
zzz:
qqq:
vvv:
}
aaa {
timestamp: 1425567605211
zzz:
qqq:
vvv:
}
}
}
这是消息结构。我怎么能在 Linux 外壳中只 grep 那个结构。可以使用awk/grep/sed或任何其他建议。
谢谢大家。
由于我们不知道文件的其余部分,因此我们只能猜测。
此gnu awk
将数据旅馆划分为组,按年份分隔。
awk -v RS="^2015" 'NR>1 {print RS$0}' file
要仅获取一个部分,请执行以下操作:
awk '/^2015-03-05 15:00:05/ {f=1} /{/ {c++} /}/ {c--} f && c; !c {f=0}' file
这将从日期2015-03-05 15:00:05
打印,直到所有{}
关闭。