設定ファイルを介して自分の壁紙を変更するライナーを作成しようとしています。適応してみてください: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
: 拡張正規表現の使用