Linux命令学习(1)----sed

 ------------------------------------------------------------------------------------------------------

       此文章仅作为学习交流所用

       转载或引用请务必注明原文地址:

       http://blog.csdn.net/luzhenrong45/article/details/11851607      

       或联系作者:luzhenrong45@gmail.com 

       谢谢!                       

     ------------------------------------------------------------------------------------------------------

LINUX命令在线查询:http://www.runoob.com/linux/linux-command-manual.html


1. sed 获取配件信息 / 更新配置文件信息

假如现在有一个文件 file.txt, 内容类似如下:

VALUE-RK30=11111
VALUE-RK31=22222
VALUE-RK32=33333
VALUE-RK33=44444
VALUE-RK34=55555


(1) 现在需要从file.txt文件中 获取 VALUE-RK33配置的值,即 44444 ,可用sed搭配正则表达式完成 

value=`sed "/^VALUE-RK33=/!d;s/.*=//" file.txt`
echo value



(2) 现在需要更新 VALUE-RK30 里面的配置值为 00000

sed -i "s/^VALUE-RK30=[0-9]\{0,\}$/VALUE-RK30=00000/" file.txt

[0-9] 代表数字,\{0,\}代表至少重复0次前面字符,无上限限制。


(3) 更新或增加VALUE-RK66=66666配置,如果配置文件已经存在VALUE-RK66,则更新其值为66666,如果不存在VALUE-RK66, 则往文件新增加一条VALUE-RK66=6666

grep -wq "^VALUE-RK66=[0-9]\{0,\}" out/kernel_version_check.mk \  
    && sed -i "s/^VALUE-RK66=[0-9]\{0,\}$/VALUE-RK66=66666/" file.txt \  
    || echo "VALUE-RK66=66666" >> file.txt  

2 匹配替换字符串


sed -i 's/原字符串/替换字符串/' filename <span style="font-family: monospace; white-space: pre; background-color: rgb(240, 240, 240);">//替换<span style="font-size: 14px;">每行的第一个</span>匹配关键字</span>

单引号里面,s表示替换,使用参数”i”表示直接在文件中替换, 三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,例如:

sed -i "s/原字符串包含'/替换字符串包含'/" filename //要处理的字符包含单引号

可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如:

sed -i 's/原字符串/替换字符串/g' filename

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

sed -i 's/原字符串1/替换字符串1/; s/原字符串2/替换字符串2/' filename //同时执行两个替换规则



©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页