如何使用sed精准删除文件中仅以accfrsh结尾的行
解决方法
直接执行以下sed命令,就能精准删除仅以accfrsh结尾的行:
# 预览删除效果(不修改原文件) sed '/accfrsh$/d' my_file # 直接修改原文件 sed -i '/accfrsh$/d' my_file
之前命令失效的原因
- 第一个命令
sed -e "/accfrsh/d" my_file:没有用$锚定行尾,只要行内包含accfrsh字符串就会被删除,后面两行的accfrshv12、accfrshv13都包含该子串,所以全部被误删。 - 第二个命令
sed -e 's/\<accfrsh\>//g' my_file:这是替换命令(以s开头),而非删除整行的命令;另外\<是HTML转义字符,sed无法识别,就算改成正确的单词边界\<accfrsh\>,也只是把行内的accfrsh替换为空,不会删除整行,完全不符合需求。 - 第三个命令
sed -e "/'^'accfrsh'$'/d" my_file:正则语法错误,多余的单引号包裹了行首锚点^和行尾锚点$,且该正则试图匹配整行只有accfrsh的行,但你的目标行开头是auth_service_oauth_secret_,自然匹配不到,所以没有任何变化。
内容的提问来源于stack exchange,提问作者bessey
相关产品推荐
相关产品推荐

