2 つの問題があります。1 つ目は、sedコマンドが期待どおりに動作していないことです。まずそれを修正しましょう。ユーザーを太字の緑で書き、残りをデフォルトの太字で書きたいと思います。これはより良いはずです:
#!/bin/bash
bold="\e[1m"
unbold="\e[0m"
green="\e[32m"
default="\e[39m"
who | sed "s/^\([[:alpha:]_]\+\)\(.*\)/$bold$green\1$default$unbold\2/"
それとも本当に良いですか?素敵な色の代わりに醜いコードが表示されます。そして、これはあなたの2番目の問題です。これを修正する方法は次のとおりです。
#!/bin/bash
bold=$'\e[1m'
unbold=$'\e[0m'
green=$'\e[32m'
default=$'\e[39m'
who | sed "s/^\([[:alpha:]_]\+\)\(.*\)/$bold$green\1$default$unbold\2/"
または、 ANSI-C の引用が気に入らない場合は、次のようにします。
#!/bin/bash
bold=$(echo -e "\e[1m")
unbold=$(echo -e "\e[0m")
green=$(echo -e "\e[32m")
default=$(echo -e "\e[39m")
who | sed "s/^\([[:alpha:]_]\+\)\(.*\)/$bold$green\1$default$unbold\2/"
ノート。bashで大文字の変数名を使用することは非常に悪い習慣と考えられています。多くの人がそれをやっているのを見ると思いますが、それは本当に間違っています。そのため、すべての変数を小文字にしました。