首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >awk温度文件到3个文件

awk温度文件到3个文件
EN

Stack Overflow用户
提问于 2016-02-14 04:07:16
回答 2查看 64关注 0票数 1

我有来自digitemp的最后一个温度值的文件。

cat /sensors/digitemp/last_meteo

代码语言:javascript
复制
a:3:{
s:16:"28DAF82D05000055";d:4.55999999999999960920149533194489777088165283203125;
s:16:"28DAE32C050000D6";d:19.379999999999999005240169935859739780426025390625;
s:16:"28F5C92D0500008E";d:20.129999999999999005240169935859739780426025390$

我想让这个文件只有3个值到3个文件。这是我的想法:

代码语言:javascript
复制
awk -F':' 'BEGIN{OFS="\n"} {print $6}' /www/control/data/last_meteo |awk '{print substr($0,0,4)}' 
awk -F':' 'BEGIN{OFS="\n"} {print $9}' /www/control/data/last_meteo |awk '{print substr($0,0,4)}' 
awk -F':' 'BEGIN{OFS="\n"} {print $12}' /www/control/data/last_meteo |awk '{print substr($0,0,4)}'

那个awk给了我:

代码语言:javascript
复制
root@router:~# awk -F':' 'BEGIN{OFS="\n"} {print $6}' /www/control/data/last_meteo |awk '{print substr($0,0,4)}'
4.55
root@router:~# awk -F':' 'BEGIN{OFS="\n"} {print $9}' /www/control/data/last_meteo |awk '{print substr($0,0,4)}'
19.3
root@router:~# awk -F':' 'BEGIN{OFS="\n"} {print $12}' /www/control/data/last_meteo |awk '{print substr($0,0,4)}'
20.1

还有另一种方法可以获得这些值吗?我的tagert输出: 4.55 19.37 20.12

EN

回答 2

Stack Overflow用户

发布于 2016-02-14 04:24:58

不要对substr使用第二个awk (固定4个符号),请使用浮点后为2位的printf

代码语言:javascript
复制
LC_NUMERIC=C awk -F':' '{printf "%.2f\n", $6}' /www/control/data/last_meteo

其余的行也以同样的方式更改。

票数 3
EN

Stack Overflow用户

发布于 2016-02-14 04:38:43

代码语言:javascript
复制
awk 'BEGIN{FS=":"};{if ($0 ~ /^s:/) {printf("%-.2f ",$4)}}' /www/control/data/last_meteo 

4.56 19.38 20.13

输入字段分隔符是在BEGIN中设置的(-F也可以)。您不需要设置输出字段分隔符。awk程序的其余部分只考虑以"s:"开头的行。您可以使其更具限制性,例如($0 ~ /s:16:"2/)。默认情况下,printf不会创建换行符,因此输出显示在同一行上。正如您在示例输出中所示,%-.2f打印的数字包含两个十进制数字,后跟一个空格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35384763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档