我正在寻找一个linux命令,它可以在文本文件中搜索一个字符串,并在文件中的每次出现时突出显示(着色)它,而不会省略文本行(就像grep那样)。
发布于 2012-10-30 07:12:51
我写了这个方便的小脚本。它也许可以扩展以更好地处理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
它对于突出显示正在运行进程的用户这样的东西很有用:
ps -ef | hl "alice|bob"
发布于 2015-01-29 16:33:24
试一试
tail -f yourfile.log | egrep --color 'DEBUG|'
其中DEBUG是要突出显示的文本。
发布于 2012-10-11 09:35:01
我认为你的意思是“不省略文本行”(而不是发出)……
我不知道这样的命令,但您可以使用这样的脚本(这是一个简单的解决方案,它将文件名(不带空格)作为第一个参数,将搜索字符串(也不带空格)作为第二个参数):
#!/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
https://stackoverflow.com/questions/12815768
复制相似问题