我知道如何用sed替换一个单词。使用
sed -i 's/[old_text]\b/[new_text]/g'
可以用new_text替换old_text。
我想要做的是在数据库模式中用char(10)替换nchar(10)或nchar(10)或nchar(10)....
CREATE TABLE Human
(
ID int,
Name nchar(10) --> should be replace with char(10)
);
这种格式很难确定。
我不知道如何设置sed正则表达式来存档它。
答案 0 :(得分:2)
你可以在任何地方选择空格:
sed -i.bak 's/\<nchar *( *\([0-9]*\) *)/char(\1)/g' file.sql
\<
用于字边界。答案 1 :(得分:0)
或者您可以在vi中打开文件并在vi cmd模式下使用以下内容
%s/nchar/char/g
这会立即替换整个文件
所有出现的nchar都将一次性替换。
在更换所有
之前检查%s/nchar/char/gc
是的,是的
n不替换
a替换所有
答案 2 :(得分:0)
使用sed
和扩展正则表达式-r
(为清晰起见)。此外-i
表示“就地”,因此无需创建不同的输出文件
sed -i sqlfile -r -e "s/nchar\s*\(\s*([0-9]+)\s*\)/char(\1)/g"