首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >查找并突出显示linux命令行中的文本

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

Stack Overflow用户
提问于 2012-10-10 17:08:51
回答 6查看 5.5K关注 0票数 3

我正在寻找一个linux命令,它可以在文本文件中搜索一个字符串,并在文件中的每次出现时突出显示(着色)它,而不会省略文本行(就像grep那样)。

EN

回答 6

Stack Overflow用户

发布于 2012-10-30 07:12:51

我写了这个方便的小脚本。它也许可以扩展以更好地处理args。

代码语言:javascript
复制
#!/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

它对于突出显示正在运行进程的用户这样的东西很有用:

代码语言:javascript
复制
ps -ef | hl "alice|bob"
票数 5
EN

Stack Overflow用户

发布于 2015-01-29 16:33:24

试一试

代码语言:javascript
复制
tail -f yourfile.log | egrep --color 'DEBUG|'

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

票数 2
EN

Stack Overflow用户

发布于 2012-10-11 09:35:01

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

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

代码语言:javascript
复制
#!/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,适当地设置权限(以便能够执行它)并调用它为

代码语言:javascript
复制
colorcat.sh filename searchstring
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12815768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档