【发布时间】:2018-12-07 10:06:11
【问题描述】:
我有 3 个文件:
File1: &VAR1='1111';
File2: &VAR2 = '2222';
File3: &VAR1 = 1111
我想改变它,例如用 &NEWVAR = 'NEW';
所以我有以下脚本:
A="\&VAR1\s*\=\s*'*[1]{4}'*"
for f in /u/123456/*; do
if grep -qE $A $f; then
sed 's/$LAREXP/$LACADE/g' $f
fi
done
Grep 告诉我 File1 和 File3 有巧合,这是正确的,但是 sed 命令不会用这些文件中的新字符串替换旧字符串。它在屏幕上显示文件的内容,但没有替换。
谁能帮我解决这个问题?
问候,
【问题讨论】:
-
试试
sed -i,这会在原地编辑文件,而不是将结果打印到终端上 -
sed 命令中的美元符号是干什么用的?如果它们是字符串的结尾,那么模式将永远不会匹配,如果它们是 shell 变量,那么它们将不会被扩展,因为它们在单引号内。
-
最后,
sed和grep都不支持像\s这样的 PCRE 正则表达式;见stackoverflow.com/questions/11568859/…