Bash - 找到正则表达式
问题描述:
我需要使用正则表达式找到一些文本并为它着色。正则表达式是我的脚本的一个参数。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”等。
我该怎么做?
答
sed
之后的第二个${word}
应该是&
。 &
告诉sed
回应它先前匹配的模式。因此,如果$word
为'hel[a-z]*\>'
,则&
在sed
的输出中为“hello”(例如)。
此外,我认为你不需要在sed
之后-e
。
word=$1
var=$(echo -e $line | grep $word | sed "s/${word}/${color}&${endColor}/g")
答
grep
本身是所有你想要的:
你可以找到man grep
更多GREP_COLORS
。
+1
看起来他正在脚本中使用输出,所以'grep --color = always'可能会更好。当然,这比使用'sed'命令更简单。 – yellowantphil 2014-11-21 00:23:37
http://mywiki.wooledge.org/BashGuide/Practices#Quoting – 2014-11-20 22:54:41
当您运行'./color_skript.sh'hel [a-z] * \>''时,它目前的功能是什么? – DanielGibbs 2014-11-20 22:55:08
它找到以字母“hel”开始的字符串,并且字符串的末尾可以是任何字符。因此,例如它会发现:“hello”,“helaa”,“helab”,“helxy”...... – Frenky 2014-11-20 23:02:26