我需要为一个字符串grep整个目录,我得到大约50个结果。我想为每个第二行着色,无论是文字颜色还是背景颜色。 Best是一个脚本,我可以将任何命令的输出传递给它,并且它会吐出相同的(尽管是彩色的)输出。
答案 0 :(得分:14)
不是很漂亮,但有诀窍:
(将此保存到foo.bash
并执行grep whatever wherever | ./foo.bash
)
#!/bin/bash
while read line
do
echo -e "\e[1;31m$line"
read line
echo -e "\e[1;32m$line"
done
echo -en "\e[0m"
您可以在这里找到list of color codes in bash。
答案 1 :(得分:4)
Perl安装在许多系统上。你可以替换它:
grep -r whatever somedir/ | perl -pe '$_ = "\033[1;29m$_\033[0m" if($. % 2)'
如果您更喜欢可读性,Perl $.
可以替换为$INPUT_LINE_NUMBER
。
答案 2 :(得分:2)
在python中也是如此;
import sys
for line_number,line in enumerate(sys.stdin.readlines()):
print '%s[1;3%dm%s%s[0m' % (chr(27),(line_number % 2+1),line,chr(27)),
答案 3 :(得分:2)
这是为了描绘我认为的包裹线? 此shell脚本使用256 color调色板中的背景颜色, 以免干扰grep --color可能会做的其他突出显示。
#!/bin/sh
c=0
while read line; do
[ $(($c%2)) -eq 1 ] && printf "\033[48;5;60m"
printf "%s\033[0m\n" "$line"
c=$(($c+1))
done
这有一点需要注意,行内的反斜杠等会被破坏, 所以将其视为重新实现的伪代码