l0b*_*0b0 15 shell colors highlighting text-processing
是否有一个命令可用于在将整个字符串传递给 stdout 的同时轻松突出显示(使用颜色、粗体文本或倒置的背景/前景)标准输入中的特定字符串?我正在考虑构建它,但如果它已经存在,我宁愿使用它。一些理想的功能:
小智 6
Sed 来救援!
你可以改进它(因为它确实需要它)但它运行得很好。
$ cat >~/bin/hilight <<EOF
#!/bin/bash
while [ $# -gt 0 ]
do
COMANDO=$COMANDO's/'$1$'/\033[01;'$2$'m\033[K\\0\033[m\033[K/g\n'
shift;shift;
done
sed -e "$COMANDO"
EOF
Run Code Online (Sandbox Code Playgroud)
为简单起见,hilight 接受一对参数(首先是匹配,其次是颜色)在此脚本中,属性始终为粗体
阅读 man console_codes (Graphic Rendition) 以查看颜色转义序列,或者试试这个
for attrib in $(seq 0 12); do
for color in $(seq 30 37) $(seq 40 47) $(seq 90 97); do
printf %b " $attrib $color:\033[$attrib;${color}mhi, dudes\033[m"
done
done
Run Code Online (Sandbox Code Playgroud)
使用这个作品时它有重要的缺点:
$ dmesg | hilight \\[ 34 ] 34
Run Code Online (Sandbox Code Playgroud)
但这根本不是:
$ dmesg | hilight \\[ 34 ] 34 [[:digit:]] 31
Run Code Online (Sandbox Code Playgroud)
因为 [:digit:] 找到了之前替换的转义序列中的数字。
就像是:
$ cat /var/log/kern.log | hilight kernel 31 a 34 et 33
Run Code Online (Sandbox Code Playgroud)
将始终正常工作。
使用 time 命令我发现这将经过的时间增加四,这并不算太多。
您可以将 sed 命令替换为您喜欢或适合您需要的任何其他解析器(awk 等...)
也许是Radovan Garab\xc3\xadk\ 的 Generic Colouriser (grc)?它需要一个配置文件作为参数并与正则表达式一起使用。所以并不是完全没有配置,但是你可以使用进程进程替换(<(list)),所以无论如何都不需要手动配置:-)