一个用sed给xml的标签编号的Bash脚本
来源:互联网 发布:阿里云 解析 怎么用 编辑:程序博客网 时间:2024/05/22 03:31
记录一下这个小脚本,试探了很久才研究出这个方法来给我的一个xml文件编号。
这个文件最初是从博客上直接复制粘贴下来的,根据其格式先对其html tag替换做好标记,然后用一句sed转换成xml的:
cat susan.txt|
sed -e 's/title/(.*/)$/<//content>/r/n<//blog>/r/n<blog>/r/n<title>/1<//title>/'|
sed -e 's/timestamp/(.*/)/<timestamp>/1<//timestamp>/r/n<content>/'|
sed -e 's/[ ]+/ /' > susanfmt.xml
当然,还要稍作调整。
但接着我需要对博客进行编号,即每一个<blog>我都需要变成<blog id="编号">,sed自己是干不了了,所以结合一点Bash:
这个文件最初是从博客上直接复制粘贴下来的,根据其格式先对其html tag替换做好标记,然后用一句sed转换成xml的:
cat susan.txt|
sed -e 's/title/(.*/)$/<//content>/r/n<//blog>/r/n<blog>/r/n<title>/1<//title>/'|
sed -e 's/timestamp/(.*/)/<timestamp>/1<//timestamp>/r/n<content>/'|
sed -e 's/[ ]+/ /' > susanfmt.xml
当然,还要稍作调整。
但接着我需要对博客进行编号,即每一个<blog>我都需要变成<blog id="编号">,sed自己是干不了了,所以结合一点Bash:
declare -i j=1
for ((i=$(cat susanfmt.xml|tee susanalt.xml|wc -l);i>=1;i--))
do
sed -i -e "$i""s/<blog>/<blog id==/"$i/">/" susanalt.xml
grep "<blog id==/"$i/">" susanalt.xml
if [ $? -eq 0 ]
then
sed -i -e "$i""s/<blog id==/"$i/">/<blog id=/"$j/">/" susanalt.xml
j=$j+1
fi
done
以上,先将目的文档susanfmt.xml复制到susanalt.xml,同时计算出行数。从最后一行到第一行,先将遇到的<blog>替换成<blog id=="该行行数">,注意多了一个=号,这是防止与最终结果相冲突。这明显不是我们要的,用grep的返回值确认的确做了一次替换后,将id=="行数"改成id="编号"。有点怪异,而且重复工作也多,效率较低,但是这是目前唯一想到的办法。- 一个用sed给xml的标签编号的Bash脚本
- sed使用技巧之--给文件的行编号
- 用linux的bash脚本写了一个菜单
- 一个发送电子邮件的bash脚本
- 一个有意思的C程序,给方阵顺序编号
- bash脚本的坑!
- bash脚本的坑
- SED单行脚本快速参考--编号
- 编写一个判断IP地址合法性的bash脚本
- 一个Onlybird的小Bash脚本,不解释
- Shell脚本的学习&&sed
- 脚本之简单的sed
- 简单的备份用bash脚本
- 登录校园网用的bash脚本
- WORD自动编号的图表标签重新编号
- bash脚本(bashmap):一个拟补bash没有hashmap的函数
- sed—在linux 中执行脚本的时候出现: /bin/bash^M: bad interpreter: No such file or directory
- 给树形控件的节点编号
- vi命令一览表
- [转]去掉字符串中重复的子字符串
- 在Vmware的CE系统中实现与主机的ActiveSync同步
- 删除合并行
- Java序列化
- 一个用sed给xml的标签编号的Bash脚本
- 收藏的数据库联接,csdn上的
- 函数组:C13Z
- 编译器错误信息: CS0016: 未能写入输出文件 拒绝访问
- 基于COM技术的分布式栅格数据引擎设计方案与应用
- Struts中不同的Action和ActionForm组合
- 无题
- TCP 协议讲解(合集)
- 每个IT人都应当拥有的30条技能