shell命令的批量修改文件内容

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

shell命令的批量修改⽂件内容
简单修改:
1,使⽤sed的打印功能,在执⾏替换前检查⼀下
$sed -n '/.png/p' c*.htm
2,没有问题的话,执⾏替换
$sed -i 's/.png/.gif/' c*.htm
3,如果你在执⾏替换前想做⼀个备份(在原⽂件之后加.bak扩展名)
$sed -i.bak 's/.png/.gif/' c2.htm
(修改c2.htm的同时,备份修改前的⽂件为c2.htm.bak⽂件)
多命令结合修改:
Linux下批量替换多个⽂件中的字符串的简单⽅法。

⽤sed命令可以批量替换多个⽂件中的字符串。

⽤sed命令可以批量替换多个⽂件中的字符串。

sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在⽬录`(千万注意这个符号,是最左上⾓那个符号不是单引号)
例如:我要把/test下所有包含abc的⽂件中的abc替换为def,执⾏命令:
sed -i "s/oldstring/newstring/g" `grep oldstring -rl /test` [格式为:sed -i "s/ / /g" filenames]
这是⽬前linux最简单的批量替换字符串命令了!
具体格式如下:
sed -i "s/oldString/newString/g" `grep oldString -rl /path`
⽅法2:
在⽇程的开发过程中,可能⼤家会遇到将某个变量名修改为另⼀个变量名的情况,如果这个变量是⼀个局部变量的话,vi⾜以胜任,但是如果是某个全局变量的话,并且在很多⽂件中进⾏了使⽤,这个时候使⽤vi就是⼀个不明智的选择。

这⾥给出⼀个简单的shell命令,可以⼀次性将所有⽂件中的指定字符串进⾏修改:
grep "abc" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/abc/abcde/g'
替换字符:sed -i "s/old/new/g" /test
查找包含指定字符的⽂件名:grep aaa –ul /test
替换整⾏为新字符串
根据⾏的部份字符串布配后替换整⾏为新字符串:
sed -i 's/^teststring.*/teststring 888888/' test.conf
--将test.conf⽂件中以teststring串开头的整⾏替换为teststring 888888 sed -i.bak 's/^teststring.*/teststring 888888/' test.conf
--修改并备份修改前的⽂件为test.conf.bak⽂件
删除指定⾏:
sed -i "/anonymous/d" /etc/passwd
sed -i "/anonymous/d" /etc/group。

相关文档
最新文档