• sed实例一则


    1、背景:

    test.txt文件里有这些语句

    li^E1026^D20150802B07QH800^B698.0^C20150801B08CDP00^B514.63^C20150803D00A8L00^B216.97
    yitianke'blog

    要找出以li^E开头的行,并将li^E这个头去掉,同时^D替换成逗号,^B^C替换成#并写入到新文件里

    2、方法

    用sed解决用两种写法,一个是

    sed -n -e 's/^li^E//' -e 's/^D/,/' -e 's/^B/#/g' -e 's/^C/#/gp' "test.txt" >"my_test.txt"

    -n代表是安静模式,只有经过sed 特殊处理的那一行(或者动作)才会被列出来;

    -e代表是允许后面有多个命令;

    s表示是替换模式,最后的p表示把替换后的语句打印出来。

    注意:p只能在在最后出现,如果写成下面的格式

    sed -n -e 's/^li^E//p' -e 's/^D/,/p' -e 's/^B/#/gp' -e 's/^C/#/gp' "kuaibao_test.txt" >"my_kuaibao.txt"

    则会打印出四行,每个-e后面的替换结果都会打印出来,后面的替换会在前面替换的基础上继续替换

    第二种写法比较简单:

    sed -n '/^li^E/{s/li^E//;s/^D/,/;s/^B/#/g;s/^C/#/g;p}'  "test.txt" >"my_test.txt

     找到匹配模式^li^E的行后,执行后面花括号中的一组命令,每个命令之间用逗号分隔

    s/^B/#/g完成一行中所有^B到#的替换,p和-n选项的合用,则只是打印作用到的行

    参考链接:http://www.cnblogs.com/mchina/archive/2012/06/30/2570523.html

  • 相关阅读:
    CodeForces 522B 手速题
    mybatis多数据源报错
    as依赖解决报错
    As 400错
    maven直接饮用jar包的写法
    测试一下多线程同时往list中添加元素会不会出问题
    jmeter中判断数据库是否存在相应的记录
    jmeter打开图形化界面时指定代理
    wz
    初阳胜阴
  • 原文地址:https://www.cnblogs.com/yitianke/p/4702457.html
Copyright © 2020-2023  润新知