shell 脚本匹配一行然后替换整行(全局替换)

Backgroud

grepsedawk俗称Linux三剑客
grep常用于字符串搜索功能
sed常用于以行为单位对文本进行处理
awk是更为细粒度的处理,可以指定分隔符将一行(一条记录)划分为多个字段,然后以字段为单位处理文本,几乎可以实现grepsed所能实现的所有功能

实例

  • 有一个文件 logicaltool.sh,我们要替换其中的一行,如下
server_num= ps -ef | grep logical_tool | wc -l
  • 整行替换为
server_num= ps -ef | grep logical_tool | grep -v grep | grep -v logicaltool.sh | grep -v vi | grep -v tail | wc -l
  • 替换脚本 replace.sh
replacement="server_num= ps -ef | grep logical_tool | grep -v grep | grep -v logicaltool.sh | grep -v vi | grep -v tail | wc -l"
sed -i "/^server_num=*/c$replacement" /home/logicaltool.sh

实测没有问题

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容