다음과 같이 "desktops"라는 문자열이 있습니다.
desktops="1 2 %{F#990000}3%{F-} 4 5 6 7 8 9 0"
"#" 뒤의 6자리 숫자는 RGB 색상을 나타내므로 3번째 바탕화면의 색상은 진한 빨간색입니다. 위의 공백으로 구분된 숫자 중 하나는 초점이 맞춰진 데스크탑을 나타낼 수 있습니다. 예를 들면 다음과 같습니다.
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-}/"