说明
工作中遇到需要使用shell命令编辑xml文件,以shell自带的命令去处理非常的不方便,于是乎找了一下处理xml的命令行工具。
在此记录一下处理过程。
准备
- 操作系统
CentOS-7.x
- 软件包
libxml2
、xml2
、xmlstarlet
操作样例
- 准备一个xml文件,这里以
Apache maven
的settings.xml
为例
1 |
|
- 在国内使用maven都需要在
settings.xml
里面配置国内的mirrors,以加速maven下载依赖包的过程。
这里以阿里云的为例,需要在settings.xml文件里面添加如下内容
1 | <mirrors> |
操作过程
处理settings.xml
- 将settings.xml处理成容易处理的字符串
- 清理注释
1 | xmlstarlet ed -d '//comment()' settings.xml | grep -v mirrors | xml2 |
处理mirror配置
- 同样使用xml2处理xml
1 | cat > aliyun_mirror.xml <<EOF |
合并配置
1 | Settings=$(xmlstarlet ed -d '//comment()' settings.xml | grep -v mirrors | xml2) |
将字符串转换成xml格式文件
- 这里将输出结果打印在终端,可以直接重定向到settings.xml文件
1 | printf "$Settings\n$AliyunMirror" | 2xml | xmllint --format - |