Shell脚本处理文本换行问题

Shell脚本处理文本换行问题文本内容如图。一个wsdl文件,里面两个import标签第一个换行了,不会通过namespaces获取到location,所以想做个类似于格... Shell脚本处理文本换行问题文本内容如图。
一个wsdl文件,里面两个import标签 第一个换行了,不会通过namespaces获取到location,所以想做个类似于格式刷的工具。将两个import标签 开始符和结束符中间如果有换行的,处理成图二不换行的效果,关键字只有import,里面的schemalocation和namespaces属性位置不一定哪个在前哪个在后,里面的值也是不固定,固定的只有import,所以不要用<import schemalocation 这种做关键字处理。
展开
 我来答
cnbubble
2018-05-31 · TA获得超过2607个赞
知道大有可为答主
回答量:1990
采纳率:83%
帮助的人:771万
展开全部

使用一个sed命令即可:

解释:

/<import/ {   如果某行找到<import   则执行后面大括号中的内容

:go;  设置一个标签

/<\/import>/!{    查找</import>   如果没找到则执行大括号中的内容

N;    ——再读取一行追加到模式空间

bgo;}} ——跳转到go标签

上面会循环一直将  从<import 开始  到</import> 结束的各行读到入模式空间

s/\n//g;  ——删除模式空间中所有的换行符

p——打印模式空间内容,即将跨行的import变成1行。

更多追问追答
追问
不好意思之前忘记说环境问题  aix小型机 用的ksh   命令我试了下  提示sed 大于8个字符。。

喊佳呀乖GA
2018-05-31 · TA获得超过364个赞
知道小有建树答主
回答量:555
采纳率:88%
帮助的人:167万
展开全部
原内容

<import xxxxxx="****************"
yyyyyyyyyyy="eeeeeeeeeeeee">
</import>
<import xxxxxx="****************" yyyyyyyyyyy="eeeeeeeeeeeee">
</import>
<import xxxxxx="****************" yyyyyyyyyyy="eeeeeeeeeeeee"></import>
通过命令
[root@localhost script]# cat test.wsdl |awk '{{printf"%s",$0}}'|sed -e 's/<\/import>/<\/import>\n/g'
<import xxxxxx="****************" yyyyyyyyyyy="eeeeeeeeeeeee"></import>
<import xxxxxx="****************" yyyyyyyyyyy="eeeeeeeeeeeee"></import>
<import xxxxxx="****************" yyyyyyyyyyy="eeeeeeeeeeeee"></import>
思路是先去掉所有换行符,然后把<\import>替换为<\import>+换行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式