Sed

字元串中間的 Sed 替換

  • December 31, 2021

嘗試編寫一個襯裡來通過配置文件更改我的牆紙。嘗試適應:使用 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: 使用擴展正則表達式

引用自:https://unix.stackexchange.com/questions/684499