Bash脚本尾部-f用彩色线条

时间:2013-06-04 06:35:08

标签: linux perl bash

我尝试从this suggestion创建一个脚本,如下所示:

#!/bin/bash

if [ $# -eq 0 ]; then
        tail -f /var/log/mylog.log
fi


if [ $# -eq 1 ]; then
        tail -f /var/log/mylog.log | perl -pe 's/.*$1.*/\e[1;31m$&\e[0m/g'
fi

当我没有向脚本传递参数时,它显示文件的黑尾,但是当我传递参数时,每一行都是红色的。我希望它只为包含传递给脚本的单词的行着色。

例如,这会使包含单词“info”的行着色:

./color_lines.sh info

如何更改脚本以使用一个参数?

1 个答案:

答案 0 :(得分:9)

不引用参数变量:

tail -f input | perl -pe 's/.*'$1'.*/\e[1;31m$&\e[0m/g'

您也可以使用grep:

tail -f input | grep -e $1 -e ''  --color=always

并用grep:

为整行着色
tail -f input | grep -e ".*$1.*" -e ''  --color=always