尝试编写一个衬垫来通过配置文件更改我的壁纸。尝试适应:使用 sed 替换正则表达式捕获组内容但我似乎无法做对。
我的配置文件包含以下字符串:
output * bg ~/pictures/wallpapers/old-wallpaper.jpg fill
我想将此字符串中的路径更改为其他路径。
这对我来说最有意义,但没有正确捕获:
sed "/output \* bg /s|.* fill|~/path/to/foobar.jpg fill|" sed_file
output * bg ~/pictures/wallpapers/old-wallpaper.jpg fill
这看起来完全错误,但似乎完成了工作。尽管我认为它取代了以 . 开头的任何内容output
。
sed "/output \* bg/s| .* fill| \* bg ~\/path\/to/foobar.jpg fill|" sed_file
output * bg ~/path/to/foobar.jpg fill
答案1
使用 GNU sed。我假设您的路径不包含空格或管道。我从 切换s///
到s|||
。
sed -E 's|^(output \* bg) [^ ]+ |\1 foo |' file
输出:
输出 * bg foo 填充
-E
:使用扩展正则表达式