我需要使用正则表达式找到一些文本并为其着色。正则表达式是我脚本的参数。
所以我可以为这个参数执行此操作:
./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" ......等等。
我怎么能这样做?
答案 0 :(得分:1)
grep
本身可以满足您的需求:
您可以在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")