文件部分内容如下:
[Port_10GE1/0/1]
/$[ArchivesInfo Version]
/$ArchivesInfoVersion=
[Board Properties]
BoardType=RTXM228-401
BarCode=333333333333333333
Item=
VendorName=WTD
IssueNumber=
CLEICode=
BOM=
[Port_10GE1/0/2]
/$[ArchivesInfo Version]
/$ArchivesInfoVersion=
[Board Properties]
BoardType=MTRS-1E31-01
BarCode=1111111111111111
Item=
IssueNumber=
CLEICode=
BOM=
[Port_10GE1/0/3]
/$[ArchivesInfo Version]
/$ArchivesInfoVersion=
[Board Properties]
BoardType=TR2SP1ZW45
BarCode=222222222222222
Item=
shell脚本如下:
grep -E "Port|BarCode=" filename.txt |sed -e 's/\[Port_//g' -e 's/\]/ /g' -e 's/BarCode=//g'|sed '{N;s/\n/ /}'|awk '{print $1" 的序列号为: "$2}'
grep -E 使过滤规则支持正则表达式,grep -E "Port|BarCode="的意思是过滤出包含Port或者BarCode的所有行并打印
sed -e 's/\[Port_//g' -e 's/\]/ /g' -e 's/BarCode=//g' 将不需要的字段替换成空
sed '{N;s/\n/ /}' {}里面可以放多条命令,用分号分开,N将下一行放入当前模式空间,将该行与下一行合并,s/\n/ /将换行替换成空格,两行变成一行了。
最后输出的效果为:
10GE1/0/1 的序列号为: 3333333333333
10GE1/0/2 的序列号为: 111111111111111
10GE1/0/3 的序列号为: 2222222222222