在linux命令行中查找并突出显示文本

Gil*_*Gil 3 linux search highlight command-line-interface

我正在寻找一个linux命令,它搜索文本文件中的字符串,并在文件中的每个出现时突出显示(颜色),没有发出文本行(如grep那样).

小智 5

我写了这个方便的小脚本.它可能会扩展到更好地处理args

#!/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
Run Code Online (Sandbox Code Playgroud)

它对突出显示运行进程的用户有用:

ps -ef | hl "alice|bob"
Run Code Online (Sandbox Code Playgroud)


use*_*372 5

尝试

tail -f yourfile.log | egrep --color 'DEBUG|'
Run Code Online (Sandbox Code Playgroud)

其中 DEBUG 是您要突出显示的文本。


0ra*_*nge 0

我认为你的意思是“不省略文本行”(而不是发出)......

我知道没有这样的命令,但您可以使用这样的脚本(这是一个简单的解决方案,它将文件名(不带空格)作为第一个参数,将搜索字符串(也不带空格)作为第二个参数):

#!/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
Run Code Online (Sandbox Code Playgroud)

另存为,例如 colorcat.sh,适当设置权限(以便能够执行它)并将其调用为

colorcat.sh filename searchstring
Run Code Online (Sandbox Code Playgroud)