如何用sed命令替换"background"后的"default"为"custom"?
用sed精准替换紧跟"background"后的"default"
直接用sed的替换命令就能实现精准修改,无需整行替换:
sed -i 's/\(background\s*\)default/\1custom/g' file.conf
命令细节说明:
-i:直接修改目标文件,若想先预览修改效果,去掉-i即可,结果会输出到终端s/原模式/替换内容/g:sed的核心替换语法,g表示一行内有多个匹配项时全部替换\(background\s*\):通过捕获分组保留"background"以及它后面的任意空白字符(空格、制表符都支持),后续可用\1引用这部分内容\1custom:保留捕获到的"background+空白"部分,仅将紧跟其后的"default"替换为"custom"
如果需要严格匹配独立的"default"单词(避免误改backgrounddefault这类连写情况),可以加上单词边界锚点:
sed -i 's/\(background\s*\)\<default\>/\1custom/g' file.conf
这里的\<和\>用来标记单词的首尾,确保匹配的是单独的"default"。
你之前使用的c命令是整行替换,会覆盖整个匹配的行,而上述方法仅修改目标单词,更高效灵活。
内容的提问来源于stack exchange,提问作者wastelander
相关产品推荐
相关产品推荐

