好吧,我有几个文件包含以下格式的一系列内容:
[abc] #4 *5
[pqr] #3 *4
[xyx] #5 *2
现在我需要替换所有发生的
[xyx] #3 *2
经过
[xyx] #1 *2
在所有文件中。
现在导致痛苦的问题是 [xyz] 和#3 之间存在空间。有两件事我将此搜索表达式作为脚本中的命令行参数,如下所示:
searchExp=$1
repalaceExp=$2
echo $searchExp
echo $replaceExp
for i in `grep \'$searchExp\'`
do
sed 's/$searchExp/$replaceExp' $i > $i.new
done
我想这应该没问题,因为我将参数传递为:
./replace_script '^\[xyz\] #3' '\[xyz\] #1'
现在,正如您在脚本中看到的 echo 语句将搜索和替换表达式中的所有空格减少到一个空格
\[xyz\] #3
现在我尝试了其他几种方法来处理空间字符
1. ^\[xyz\][ ]+#3
这是一个尖叫不平衡的[],所以正则表达式错误
2. ^\[xyz\]\s+#3 //as per few suggestion on SO
这不匹配。
你能看出我哪里错了吗?
编辑:纠正错字