次の方法で受信(およびフィルタリング)された行にプレフィックスを追加する方法はありますかawk
?はい、わかりました。それはこれまでは条件付きで(たとえば、$PS1
周辺のBashスクリプトや変数の存在によって[ -t 1 ]
)ANSIエスケープシーケンスを使用して色を指定することは可能ですか?
私はアンカーと2つの異なる方法を使用してプレフィックスを追加する方法を知っています^
。echo
printf
awk
インラインスクリプト内で評価できる条件に基づいて、概要に従って生成された出力の色をどのように指定できますかawk
?
注:私が所有またはmawk
処分gawk
できるのはmawk
デフォルトです。
答え1
if [ -t 1 ]; then
eval "$(printf 'COLOR_ON="\033[31m" COLOR_OFF="\033[m"')"
else
COLOR_ON= COLOR_OFF=
fi
export COLOR_ON COLOR_OFF
awk '{print ENVIRON["COLOR_ON"] "prefix: " ENVIRON["COLOR_OFF"] $0}'
または:
[ ! -t 1 ]
awk -v color="$?" '{
print((color ? "\033[31m" : "") "prefix: " (color ? "\033[m" : "") $0)}'
答え2
以下で端末を確認できます。
> echo foo | awk '{if (system("tty >/dev/null 2>&1")) print "true"; else print "false";}'
true