【发布时间】:2015-10-19 18:47:15
【问题描述】:
我有一个这种格式的日志文件。
-----------------------------------------------------------
name=abc
address=country:US,Zip:12345/1,city:ny/1,state:ny/1, yearsLived:5/1,other details
healthDetails=healthplan:medixx/1, expensesInDollars:150/1, other details
-----------------------------------------------------------
name=xyz
address=country:US,Zip:12345/1,city:ny/1,state:ny/1, yearsLived:3/1,other details
healthDetails=healthplan:medixx/1, expensesInDollars:150/1, other details
-----------------------------------------------------------
name=awd
address=country:US,Zip:12345/1,city:ny/1,state:ny/1, yearsLived:2/1,other details
healthDetails=healthplan:medixx/1, expensesInDollars:150/1, other details
-----------------------------------------------------------
如果日志文件中每个名称的寿命大于特定年份(例如 2),我想提取此人的姓名和寿命。该文件也会有重复的名称,但细节不同。
输出:
name:abc
yearLived:5
name:xyz
yearsLived: 3
我试图使用 grep 和 cut 命令来做到这一点。我面临的问题是,一旦我执行 grep 或 cut 我会丢失另一部分,即名称或地址。我该如何解决这个问题?
【问题讨论】:
-
不要使用
grep或cut。使用awk或类似工具。 -
每个值后面的 /1 是什么?并且总是以这种格式记录,即名称行后换行?
-
这只是一些与日志相关的版本号(忽略它)。是的,格式总是一样的
-
@jas 更新了问题。尽管除了姓名和年份之外,我的信息几乎相同
-
awk 有帮助,因为您可以做的不仅仅是盲目地匹配和剪切文本。你有任意复杂的逻辑和更奇特的方法来将数据分解成记录。