免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2626 | 回复: 12
打印 上一主题 下一主题

如何只修改一次匹配就退出,请高手指点,谢谢! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-19 17:40 |只看该作者 |倒序浏览
本帖最后由 unix_zzc 于 2010-03-22 15:36 编辑

原来问题没描述准确,现对问题描述做了修改,还望各位大侠指点!谢谢!

linux zzc/test> more test.sh
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <filter>
                <filter-name>characterEncodingFilter</filter-name>
                <filter-class>com.filter.CharacterEncodingFilter</filter-class>
                <init-param>
                        <param-name>encoding</param-name>
                        <param-value>UTF-8</param-value>
                </init-param>
        </filter>
        <filter-mapping>
                <filter-name>characterEncodingFilter</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
        <filter>
            <filter-name>downloadFilter</filter-name>
            <filter-class>com.msg.web.DownloadFilter</filter-class>
        </filter>
        <filter-mapping>
           <filter-name>downloadFilter</filter-name>
           <url-pattern>*.action</url-pattern>
        </filter-mapping>
        <filter>
            <filter-name>licenseFilter</filter-name>
            <filter-class>com.license.web.LicenseFilter</filter-class>
        </filter>
        <filter-mapping>
           <filter-name>licenseFilter</filter-name>
           <url-pattern>*.action</url-pattern>
        </filter-mapping>
</web-app>



linux zzc/test> sed "s/<filter>/<filter>\n\t\t<filter-name>BBSFilter<\/filter-name>\n\t\t<filter-class>com.bbs.web.BBSFilter<\/filterclass>\n\t<\/filter>\n\t<filter-mapping>\n\t\t<filter-name>BBSFilter<\/filter-name>\n\t\t<url-pattern>*.action<\/url-pattern>\n\t<\/filter-mapping>\n\t<filter>/" test.sh > temp.out


linux zzc/test> more temp.out
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
       <filter>
                <filter-name>BBSFilter</filter-name>
                <filter-class>com.bbs.web.BBSFilter</filterclass>
        </filter>
        <filter-mapping>
                <filter-name>BBSFilter</filter-name>
                <url-pattern>*.action</url-pattern>
        </filter-mapping>
        <filter>
                <filter-name>characterEncodingFilter</filter-name>
                <filter-class>com.filter.CharacterEncodingFilter</filter-class>
                <init-param>
                        <param-name>encoding</param-name>
                        <param-value>UTF-8</param-value>
                </init-param>
        </filter>
        <filter-mapping>
                <filter-name>characterEncodingFilter</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
        <filter>
                <filter-name>BBSFilter</filter-name>
                <filter-class>com.bbs.web.BBSFilter</filterclass>
        </filter>
        <filter-mapping>
                <filter-name>BBSFilter</filter-name>
                <url-pattern>*.action</url-pattern>
        </filter-mapping>

        <filter>
            <filter-name>downloadFilter</filter-name>
            <filter-class>com.msg.web.DownloadFilter</filter-class>
        </filter>
        <filter-mapping>
           <filter-name>downloadFilter</filter-name>
           <url-pattern>*.action</url-pattern>
        </filter-mapping>
        <filter>
                <filter-name>BBSFilter</filter-name>
                <filter-class>com.bbs.web.BBSFilter</filterclass>
        </filter>
        <filter-mapping>
                <filter-name>BBSFilter</filter-name>
                <url-pattern>*.action</url-pattern>
        </filter-mapping>
       <filter>
            <filter-name>licenseFilter</filter-name>
            <filter-class>com.license.web.LicenseFilter</filter-class>
        </filter>
        <filter-mapping>
           <filter-name>licenseFilter</filter-name>
           <url-pattern>*.action</url-pattern>
        </filter-mapping>
</web-app>


我只想在第一位置添加BBSFilter,可命令在每个“<filter>”之前都给我添加了一个,请各位大侠指点下,多谢!
awk能够实现也可以。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2010-03-19 17:47 |只看该作者

  1. sed "1,/<filter>/ s/<filter>/<filter>add one<filter>/" urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-03-19 20:12 |只看该作者
本帖最后由 bbgg1983 于 2010-03-19 20:24 编辑

kao,buxing ,wotuxue

论坛徽章:
0
4 [报告]
发表于 2010-03-20 10:29 |只看该作者
try below:

sed -i 's/<filter>/<filter>add one<filter>/;/<filter>/q' yourfile

注释:
1. 's/<filter>/<filter>add one<filter>/; 是楼主需要的动作
2.  /<filter>/q 确保第一次匹配后推出

论坛徽章:
0
5 [报告]
发表于 2010-03-20 11:21 |只看该作者
  1. awk '/<filter>/&&!a{sub(/<filter>/,"&add one&");print;a++;next}1' file
复制代码
awk也能用

论坛徽章:
17
2015年辞旧岁徽章
日期:2015-03-03 16:54:152017金鸡报晓
日期:2017-02-08 10:39:422017金鸡报晓
日期:2017-01-10 15:19:56JAVA
日期:2016-11-01 13:25:46C
日期:2016-10-25 16:01:4715-16赛季CBA联赛之八一
日期:2016-06-21 23:38:0815-16赛季CBA联赛之山东
日期:2016-05-12 12:49:54IT运维版块每日发帖之星
日期:2016-04-20 06:20:00IT运维版块每日发帖之星
日期:2016-03-22 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13IT运维版块每日发帖之星
日期:2015-08-25 06:20:002015亚冠之德黑兰石油
日期:2015-08-22 22:55:54
6 [报告]
发表于 2010-03-21 17:37 |只看该作者
本帖最后由 ccjsj1 于 2010-03-21 17:40 编辑

呵呵,一样的awk,楼上两个&用的好
  1. awk '{if($0~/filter/&&!a++)sub("<filter>","&add one&");print $0}' file
复制代码

论坛徽章:
0
7 [报告]
发表于 2010-03-21 22:04 |只看该作者
本帖最后由 灿烂小猪 于 2010-03-21 22:42 编辑

sed '/<filter>/{s//&add one&/;q}' yourfile

不行,我这条有问题,不好意思!

论坛徽章:
0
8 [报告]
发表于 2010-03-22 15:08 |只看该作者
回复 1# unix_zzc


    问题描述做下修改,请各位大侠再帮忙看,多谢!

论坛徽章:
0
9 [报告]
发表于 2010-03-22 16:38 |只看该作者
回复 8# unix_zzc


    换汤不换药啊,用2楼的方法就是了,前面制定范围 1,/<...>/

论坛徽章:
0
10 [报告]
发表于 2010-03-22 16:51 |只看该作者
回复 9# where27


    OK。可以了,可能是我上午修改的方式不对,上午得到的结果是添加进去好几条记录,多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP