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

实测没有问题

你可能感兴趣的:(Linux,shell,awk,linux)