我在尝试从格式类似于以下内容的日志文件中获取唯一出现的 DeviceId
时遇到一些问题:
log: {"deviceInfo":{"DeviceId":"123","device":"Android"}
log: {"deviceInfo":{"device":"Android","DeviceId":"123"}
log: {"deviceInfo":{"device":"Android","DeviceId":"234"}
log: {"deviceInfo":{"device":"iPhone","DeviceId":"323"}
log: {"deviceInfo":{"device":"iPhone","DeviceId":"323"}
我期待的是这样的输出:
log: {"deviceInfo":{"DeviceId":"123","device":"Android"}
log: {"deviceInfo":{"device":"Android","DeviceId":"234"}
log: {"deviceInfo":{"device":"iPhone","DeviceId":"323"}
我尝试使用 awk
但我似乎可以弄明白。有谁知道如何做到这一点?
我知道应该有一种方法可以使用 awk
打印 DeviceId
,但我似乎无法弄清楚。一旦获得 DeviceId
,我就可以通过管道传输到 sort
和 uniq
。
最佳答案
使用 Perl:
perl -lne 'if ( m{"DeviceId":" ([^"]+) "}xms ) { print if not $seen{$1}++; }' <log
关于linux - 如何从文件中获取唯一事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073146/