LF4*_*LF4 11 variables bash scripting sed
我正在尝试编写一个带有一些变量的bash脚本,然后使用grep对给定的文件搜索进行查找/替换,以获取具有该字符串的文件列表.我认为我遇到的问题是在sed中看到变量我不知道它可能是什么.
if [ "$searchFiles" != "" -a "$oldString" != "" -a "$newString" != "" ]; then
echo -en "Searching for '$searchFiles' and replacing '$oldString' with '$newString'.\n"
for i in `grep $oldString $searchFiles |cut -d: -f1|uniq`; do
sed -i 's/${oldString}/${newString}/g' $i;
done
echo -en "Done.\n"
else
usage
fi
Run Code Online (Sandbox Code Playgroud)
Kar*_*ath 23
使用双引号,所以shell可以替换变量.
for i in `grep -l $oldString $searchFiles`; do
sed -i "s/${oldString}/${newString}/g" $i;
done
Run Code Online (Sandbox Code Playgroud)
如果您的搜索或替换字符串包含特殊字符,则需要转义它们:转义字符串以获取sed替换模式
使用双引号,以便shell在调用sed之前扩展环境变量:
sed -i "s/${oldString}/${newString}/g" $i;
Run Code Online (Sandbox Code Playgroud)
警惕:如果有一个oldString或newString包含斜线或其他正则表达式的特殊字符,它们将被解释为它们的特殊含义,不为文字字符串.
| 归档时间: |
|
| 查看次数: |
62264 次 |
| 最近记录: |