------------------------------------------------------------------------------------------------------
此文章仅作为学习交流所用
转载或引用请务必注明原文地址:
http://blog.youkuaiyun.com/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 //同时执行两个替换规则