zoukankan      html  css  js  c++  java
  • shell sed语法详解

    sed  替换文件中的字符串

    sed -e 's/foo/bar/' myfile   将 myfile 文件中每行第一次出现的foo用字符串bar替换,然后将该文件内容输出到标准输出

    sed -e 's/foo/bar/g' myfile  g 使得 sed 对文件中所有符合的字符串都被替换

    sed -i 's/foo/bar/g' myfile  选项i的用途是直接在文件中进行替换

    为防止误操作带来灾难性的后果,sed在替换前可以自动对文件进行备份,前提是需要提供一个后缀名。mac osx下是强制要求备份的,centos下是可选的 
    sed -i '.bak' 's/foo/bar/g' ./m* 
    如果不需要备份文件,使用空字符串来取消备份,mac osx下可以使用如下命令完成替换操作: 
    sed -i '' 's/foo/bar/g' ./m*

    sed 's/^/添加的头部&/g' //在所有行首添加
    sed 's/$/&添加的尾部/g' //在所有行末添加
    sed '2s/原字符串/替换字符串/g' //替换第2行
    sed '$s/原字符串/替换字符串/g' //替换最后一行
    sed '2,5s/原字符串/替换字符串/g' //替换2到5行
    sed '2,$s/原字符串/替换字符串/g' //替换2到最后一行

    替换样式可以多个在同一条命令中执行,用分号”;”分隔,例如:

    代码如下:

    sed 's/^/添加的头部&/g;s/$/&添加的尾部/g' //同时执行两个替换规则

    当替换的内容有变量时,需要使用“”

    如:sed "s/$a/$b/" filename

    常见字符串替换:

    1.替换sdk.dir=H:\sdk.text  需要将H:\sdk.text替换为/Users/jenkins/jenkins/tool/android-sdk-macosx

    sed -i "" 's@(sdk.dir=).*@1/Users/jenkins/jenkins/tool/android-sdk-macosx@' ${WORKSPACE}${fileload}  

    ---s后面的分隔符可以为/ @ #等。.*代表sdk.dir=后的内容  1代表sdk.dir=

    2.替换thinkive.keystore为/Users/jenkins/Documents/Android_keystore/thinkive.keystore

    sed -i "" 's@thinkive.keystore@/Users/jenkins/Documents/Android_keystore/thinkive.keystore@' ${WORKSPACE}/app/build.gradle

    直接替换即可。

    3.替换<string>23</string> 为<string>24</string>

    sh '''sed -i "" "s@<string>23</string>@<string>${Codeversion}</string>@" ${WORKSPACE}${fileload}

    直接替换即可。

    4.替换特殊字符串中的字符串。如替换thinkiveQWERT1003中的1003为1004

    sed -i "" '/thinkiveQWERT1003/s/1003/1004/' ${WORKSPACE}/app/build.gradle

    原字符串写在s前面。

  • 相关阅读:
    C# 截取窗口图像(包括遮挡窗口,最小化窗口)
    C# 自定义DevExpress中XtraMessageBox的窗口Icon
    C# DevExpress的皮肤,没有在多线程中应用
    DevExpress的RibbonForm在WIN7下标题栏透明,没应用程序设置的Skin
    C# RibbonForm的标题Text显示不完全的解决方法
    C# 使用递归获取文件路径,不获取拒绝访问的文件夹
    socket使用
    KMP模板
    HDU1358(KMP)
    windows环境变量
  • 原文地址:https://www.cnblogs.com/wwyxyt/p/8260491.html
Copyright © 2011-2022 走看看