如何使用awk或sed为数据集每行添加对应设备标签?
用AWK格式化设备数据文件
需求说明
现有一个包含多设备数据的文件,格式如下:
device: thing1 data1 data2 data3 data4 data1 data2 data3 data4 ... device: thing2 data1 data2 data3 data4 data1 data2 data3 data4 ...
需要将其转换为每行数据前加上对应设备名的格式:
thing1 data1 data2 data3 data4 thing1 data1 data2 data3 data4 ... thing2 data1 data2 data3 data4 thing2 data1 data2 data3 data4 ...
解决方案
使用以下AWK命令即可实现:
awk '/device:/ { device = $2; next } NF { print device, $0 }' data_sets.txt
命令解释
/device:/ { device = $2; next }:匹配包含device:的行,将该行第二个字段(即设备名)存入变量device,next关键字跳过当前行的后续处理,避免输出device:行本身。NF { print device, $0 }:NF表示当前行的字段数大于0(即非空行),此时输出已保存的设备名,再拼接当前行的所有数据内容。
问题分析
你之前的命令仅处理了device:标记行,还错误地将设备名与device:行内容一起输出,完全没有处理后续的数据行。上述命令区分了设备标记行和数据行,分别完成设备名记录、数据行加前缀的操作,精准匹配需求。
内容的提问来源于stack exchange,提问作者sidsmokes
相关产品推荐
相关产品推荐

