Bash - 找到正则表达式

时间:2014-11-20 22:52:13

标签: regex bash

我需要使用正则表达式找到一些文本并为其着色。正则表达式是我脚本的参数。

所以我可以为这个参数执行此操作:

./color_skript.sh 'hello' 

程序:

word=$1
var=$(echo -e $line | grep $word  | sed -e "s/${word}/${color}${word}${endColor}/g")

它有效,它找到"你好"在每一行。但是当我有这个参数时:

./color_skript.sh 'hel[a-z]*\>'

它应该找到每个开头的单词" hel"以任何字母结尾。例如:" helaa"," helab"," helzz" ......等等。

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

grep本身可以满足您的需求:

enter image description here

您可以在GREP_COLORS中找到有关man grep的更多信息。

答案 1 :(得分:-1)

${word}之后的第二个sed应该是&&告诉sed回显之前匹配的模式。因此,如果$word'hel[a-z]*\>',那么&就是"你好" (例如)在sed的输出中。

此外,我认为您不需要在-e之后sed

word=$1
var=$(echo -e $line | grep $word  | sed "s/${word}/${color}&${endColor}/g")