如何使用Awk转义方括号并删除Ini指定错误行
AWK删除指定错误配置行实现方法
AWK中正则模式下的[属于特殊元字符,用于标记字符集的起始,做字面量匹配时需要转义,你可以根据使用习惯选以下两种可直接运行的方案:
- 正则转义匹配方案
直接给特殊字符[加反斜杠转义,通过取反匹配跳过错误行实现删除,命令如下:
命令中# 先输出到新文件,确认无误后再替换原文件 awk '!/\[End\[edit=true\]/' config.ini > config_fixed.ini!表示对匹配结果取反,所有不匹配错误内容的行都会被正常输出,匹配到的错误行会被直接丢弃。 - 非正则精确匹配方案(推荐,无需记转义规则)
如果怕转义符号写错,可以用AWK内置的index()函数做字符串精确查找,完全不需要处理正则特殊字符的转义,容错率更高:awk 'index($0, "[End[edit=true]") == 0' config.ini > config_fixed.iniindex($0, 目标字符串)会返回目标字符串在当前行的起始位置,返回值为0时代表当前行不存在目标错误内容,才会被输出。
注意:执行修改前务必备份原配置文件。如果你使用的是Linux环境默认的GNU AWK,可以加
-i inplace参数实现原地修改,同时自动生成备份文件:# 原地修改,自动生成config.ini.bak备份 awk -i inplace -v inplace::suffix=.bak 'index($0, "[End[edit=true]") == 0' config.ini
内容的提问来源于stack exchange,提问作者Abou Ilyès
相关产品推荐
相关产品推荐

