繁体   English   中英

如何用sed文件中的某些模式替换单词?

[英]How to replace the words with certain pattern in a file with sed?

我知道如何用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正则表达式来对此进行存档。

您可以在任何地方使空格为可选:

sed -i.bak 's/\<nchar *( *\([0-9]*\) *)/char(\1)/g' file.sql
  • \\<用于单词边界。

或者,您可以在vi中打开文件并在vi cmd模式下使用以下命令

%s/nchar/char/g

一次替换整个文件

一次性替换所有出现的nchar。

并在更换所有之前进行检查

%s/nchar/char/gc

y是

n表示不更换

用于替换所有休息

使用sed和扩展的regex -r (为清楚起见)。 另外-i表示“就地”,因此无需创建其他输出文件

sed -i sqlfile -r -e "s/nchar\s*\(\s*([0-9]+)\s*\)/char(\1)/g"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM