Sed
字元串中間的 Sed 替換
嘗試編寫一個襯裡來通過配置文件更改我的牆紙。嘗試適應:使用 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
使用 GNU sed。我假設您的路徑不包含空格或管道。我從 切換
s///
到s|||
。sed -E 's|^(output \* bg) [^ ]+ |\1 foo |' file
輸出:
輸出 * bg foo 填充
-E
: 使用擴展正則表達式