如何用sed命令修改test文件中指定行的chris_white为chris_brown
使用sed修改指定行中的内容
刚好可以用sed的地址匹配+替换组合来完成这个需求,直接给你最常用的命令:
sed -i '/chris_white/s/chris_white/chris_brown/' test
拆解一下每个部分的作用:
-i:直接在原文件上修改内容(如果是macOS系统的sed,需要写成-i '',因为它强制要求指定备份后缀,空字符串表示不生成备份)/chris_white/:这是sed的地址匹配规则,意思是只处理包含chris_white的行,避免误改其他行s/chris_white/chris_brown/:标准的sed替换命令,把匹配到的行里的chris_white替换成chris_brown
安全验证小技巧:
如果你担心直接修改原文件出错,可以先不加-i选项预览修改效果:
sed '/chris_white/s/chris_white/chris_brown/' test
输出会显示修改后的内容,确认没问题再加上-i执行实际修改。
备份文件的方法:
如果想保留原文件的备份,可以给-i加一个后缀名,比如:
sed -i.bak '/chris_white/s/chris_white/chris_brown/' test
执行后会生成一个test.bak的备份文件,万一改错了可以直接恢复。
执行完命令后,你的test文件第三行就会变成:
u003:x:comp132:chris_brown
内容的提问来源于stack exchange,提问作者Ethereal_Lion
相关产品推荐
相关产品推荐

