[ Shell篇 ]

编程入门 行业动态 更新时间:2024-10-22 02:57:04

[ <a href=https://www.elefans.com/category/jswz/34/1770778.html style=Shell篇 ]"/>

[ Shell篇 ]

实际过程中一些从软件导出来的配置文件格式格式比较混乱,一般需要整理成特定的格式,才好处理,场景如下:

  1. 配置功放芯片TAS5754的EQ,软件导出来的格式如下:
#			--------------------------------------------------------------- page 0 is selected
w 98 00 00
#			--------------------------------------------------------------- page 1 is selected
w 98 00 01
#			# reg[1][3] = 0x4
w 98 03 04
#			--------------------------------------------------------------- page 0 is selected
w 98 00 00
#			# reg[0][0x3] = 0x11
w 98 03 11
#			# reg[0][2] = 0x10
w 98 02 10
#			--------------------------------------------------------------- page 44 is selected
w 98 00 2c
#			 (Bit 31-24) ------------ MSB DAC COEFF No. 0
w 98 08 ff
#			 (Bit 23-16)
> ff
#			 (Bit 15-8)
> ff
#			 (Bit 7-0)
> 00
#			 (Bit 31-24) ------------ MSB DAC COEFF No. 1
> 80
#			 (Bit 23-16)
> 00
#			 (Bit 15-8)
> 00
#			 (Bit 7-0)
> 00
#			 (Bit 31-24) ------------ MSB DAC COEFF No. 2
> 40
#			 (Bit 23-16)
> 00
#			 (Bit 15-8)
> 00
#			 (Bit 7-0)
> 00
#			 (Bit 31-24) ------------ MSB DAC COEFF No. 3
> 7f
#			 (Bit 23-16)
> ff
#			 (Bit 15-8)
> ff
#			 (Bit 7-0)
> 00
....总共有7642行
  1. 这种格式文件一般需要写一个脚本去过滤掉无用的数据,可以发现这个文件有需要的数据有一些规律:w和> 都是想要数据,有了这个规律就好办了, 最终完成之后的数据如下:
// 只提取了所有w开头的第2行和第3行数据和> 开头的第1行数据
00 00
00 01
03 04
00 00
03 11
02 10
00 2c
08 ff
ff
ff
00
80
00
00
00
40
00
00
00
7f
ff
实现步骤

一看这个文件基本都是列的操作,所以使用awk这个强大的工具过滤掉无用的数据。这个命令很久没有了,重点可以参考AWK 简明教程和三十分钟学会AWK快速了解该命令的用法,这里不介绍基本语法。

提取w和>开头的所有数据

$FILE=源文件
$PROCESS=处理之后的数据#匹配第一行如果是w,则打印$2,$3,$4,如果第一行是>,则打印$2awk '{if($1 ~/w/) print $2,$3,$4; else if($1 ~/>/) print $2}' $FILE > $PROCESS这里使用了if和else语句,如果$1(第1列)和w匹配,则打印 第2,3,4列如果$1和>匹配,则只打印第2列其中 ~ 表示模式开始。/ /中是模式。这就是一个正则表达式的匹配。

完成之后的数据变为:

98 00 00
98 00 01
98 03 04
98 00 00
98 03 11
98 02 10
98 00 2c
98 08 ff
ff
ff
00
80
00
00
00
提取以98开头的第2列和第3列
$PROCESS=只有w和>开头的数据# 如果第一行是98,则打印第2.3行,否则打印第一行awk '{if($1 ~ /98/) print $2,$3; else print $1}' $PROCESS > $FINISH_HEX

最终通过awk完成了数据的过滤.


文章参考
  1. awk分隔符
  2. 如何使用 awk 和正则表达式过滤文本或文件中的字符串
书籍推荐

豆瓣评分9.6分

  1. The AWK Programming Language

原版英文书,国人译成中文版本AWK中文版本

更多推荐

[ Shell篇 ]

本文发布于:2024-03-10 21:21:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1729068.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Shell

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!