正規表現に一致する文字列入力に基づいて色を指定する Bash 関数

正規表現に一致する文字列入力に基づいて色を指定する Bash 関数

Bashスクリプトで印刷する複数行の文字列があります。

docstring="
 Headings
  -H, -H CNT, -H=CNT, -HCNT, --heading CNT, --heading=CNT

 Warnings
  -W, -W CNT, -W=CNT, -WCNT, --warning CNT, --warning=CNT

 Errors
  -E, -E CNT, -E=CNT, -ECNT, --error CNT, --error=CNT"

echo "$docstring"

-この文字列を使用して、or in colorで始まる行を印刷する関数を作成したいと思います{-

したがって、次の色が割り当てられます。

-H, -H CNT, -H=CNT, -HCNT, --heading CNT, --heading=CNT
-W, -W CNT, -W=CNT, -WCNT, --warning CNT, --warning=CNT
-E, -E CNT, -E=CNT, -ECNT, --error CNT, --error=CNT

ベストアンサー1

GNUの使い方、文字列に、\または文字が含まれていないとします。`"$

printred(){ 
    sed -E 's/^ *\{?-.*/tput setaf 1;printf "%s" "&";tput sgr0/e' <<< "$@"
}

使用法:

printred "$docstring"

別の色を選択するには、以下を確認してください。

for i in {0..7}; do
    tput setaf "$i"
    echo "tput setaf $i"
    tput sgr0
done

指示:

CGIスクリプトとして使用しないでプライベートにしてください。 Stephane Chazelasが指摘したように、任意のコマンドを実行できるからです。これは信頼できる環境で使用するためのものです。または、入力文字列を削除するフィルタを作成します。

おすすめ記事