如何修改sed命令避免重复在指定行前添加exit()语句?
解决sed重复插入exit()的问题
要实现仅在目标行前未添加exit()时才执行插入操作,无需前置grep检查,直接修改sed命令即可:
sed -i ':skip; /^exit()$/{n;/LIST_ALL_SELECT_TOOL_PACKAGES_CMD/b skip}; /LIST_ALL_SELECT_TOOL_PACKAGES_CMD/i exit()' yumrpm.py
工作原理:
:skip:创建一个跳转标记,用于跳过插入操作/^exit()$/{n;/LIST_ALL_SELECT_TOOL_PACKAGES_CMD/b skip}:- 匹配独立的
exit()行(^和$确保这行只有exit(),避免误匹配包含该内容的其他行) - 读取该行的下一行(
n命令) - 如果下一行是目标行
LIST_ALL_SELECT_TOOL_PACKAGES_CMD,就跳转到skip标记,不执行后续插入
- 匹配独立的
/LIST_ALL_SELECT_TOOL_PACKAGES_CMD/i exit():当上面的条件不触发时,说明目标行前还没有exit(),就在目标行前插入exit()
重复执行这个命令时,只要目标行前已经存在对应的exit(),就会自动跳过插入操作,不会重复添加。
内容的提问来源于stack exchange,提问作者Judy
相关产品推荐
相关产品推荐

