我正在寻找一个在文本文件中searchstring的linux命令,并在文件中每次出现时高亮显示(颜色),而不是发出文本行(就像grep一样)。
我写了这个方便的小脚本。 它可能会扩展到更好地处理参数
#!/bin/bash if [ "$1" == "" ]; then echo "Usage: hl PATTERN [FILE]..." elif [ "$2" == "" ]; then grep -E --color "$1|$" /dev/stdin else grep -E --color "$1|$" $2 fi
这对于突出显示正在运行进程的用户来说很有用:
ps -ef | hl "alice|bob"
尝试
tail -f yourfile.log | egrep --color 'DEBUG|'
DEBUG是您想要突出显示的文本。
我认为你的意思是“不忽略文本行”(而不是排除)。
我知道没有这样的命令,但你可以使用这样的脚本(这是一个简单的解决方案,采用文件名(不含空格)作为第一个参数和搜索字符串(也没有空格)作为第二个):
#!/usr/bin/env bash ifs_store=$IFS; IFS=$'\n'; for line in $(cat $1); do if [ $(echo $line | grep -c $2) -eq 0 ]; then echo $line; else echo $line | grep --color=always $2; fi done IFS=$ifs_store
保存为例如colorcat.sh,适当地设置权限(以便能够执行它)并将其称为
colorcat.sh filename searchstring
我最近有这样的要求,并捣毁一个小程序来做到这一点。 链接
用法: ./highlight test.txt '^foo' 'bar$'
请注意,这是非常粗糙的,但可以做成一个抛光一般的工具。