次のように文字列「desktops」があります。
desktops="1 2 %{F#990000}3%{F-} 4 5 6 7 8 9 0"
「#」の後の6桁の数字はRGB色を表しているため、3番目の壁紙の色は濃い赤です。上記のスペースで区切られた数字の1つは、フォーカスされたデスクトップを表すことができます。たとえば、次のようになります。
focused="9"
この場合、次のような出力が必要です。
"1 2 %{F#990000}3%{F-} 4 5 6 7 8 %{F#FFFF00}9%{F-} 0"
RGBカラーコードの数がデスクトップリストにも表示されると問題が発生します。
私はこれを試しました:
echo $desktops | sed "s/$focused/%{F#FFFF00}$focused%{F-}/"
しかし、もちろんカラーコードのフォーカス変数に数字があると動作しません。
どのようなヒントがありますか?
答え1
周辺空間と調和しています。順序の最初または最後のデスク番号を一致させるために、境界スペースを一時的に追加してから削除します。
echo " $desktops " | sed -e "s/ $focused / %{F#FFFF00}$focused%{F-} /" -e 's/^ \(.*\) $/\1/'
GNU 拡張または同様の拡張を使用すると、単語境界で直接一致させることができます。
echo "$desktops" | sed -e "s/\<$focused\>/%{F#FFFF00}$focused%{F-}/"