【发布时间】:2017-06-29 08:58:56
【问题描述】:
我有这行:
102:20620453:d=2017021012:UGRD:10 m above ground:15 hour fcst::lon=79.500000,lat=9.000000,val=-5.35
现在我只想从这一行打印值 -5.35,而不是别的。
我还希望这个命令能够从这一行中提取 -7.04 而没有别的。
102:20620453:d=2017021012:UGRD:10 m above ground:15 hour fcst::lon=280.500000,lat=11.000000,val=-7.04
我已经阅读了其他堆栈溢出问题,但它们似乎并没有完全理解我要寻找的内容。我注意到他们做了 awk 或 sed。我应该做哪些事情才能在 val= 之后仅提取上述行的一部分?
【问题讨论】:
-
val是否绝对肯定是每一行中的最后一个字段——不仅适用于当前版本的日志字符串,还适用于所有未来版本?就个人而言,我对做出这样的假设持谨慎态度。 -
顺便说一句——您是一次处理一行,还是一次处理整个文件?它在性能上有很大的不同:您最好将
awk用于大流,而如果您一次一行,使用 bash 内置将节省启动外部进程的(显着)成本。 (也就是说:如果你只是在每行日志记录中运行一个 awk 副本,anubhava 的答案比我的要慢得多,但是使用 anubhava 的 awk 并给它 20MB 的日志来一次解析比使用要快得多循环中的 bash 内置字符串操作)。