如何在unix中替换双引号中的单词

时间:2014-02-25 14:13:02

标签: bash unix sed

我正在寻找以下要求。

输入文件将包含字符串

CREATE INDEX "SCOTT"."IX_EMP" ON "SCOTT"."EMP" ("EMP_ID") 

我希望看到输出如下

CREATE INDEX "SCOTT"."IX_EMP" ON "SCOTT"."T_EMP" ("EMP_ID")

所以,我写了如下的声明

$file_name.sql=sed -e "s/"ON SCOTT"."/"ON SCOTT"."T_/ig" $file_name.sql

不幸的是,在我的输出文件中,我想念scott,输出文件包含以下内容

CREATE INDEX IX_EMP ON T_EMP

你能帮助我获得所需的输出值吗?

3 个答案:

答案 0 :(得分:2)

您可以尝试此sed

sed 's/ON "SCOTT"."EMP/ON "SCOTT"."T_EMP/g'

这里的技巧是单引号转义双引号(有效地将它们转换为普通字符),因此您可以在模式中使用它们。

答案 1 :(得分:0)

以下sed命令应该进行转换。

sed -e 's/ON "SCOTT"."/ON "SCOTT"."T_/'

这假定您要替换ON“SCOTT”的所有实例。“与ON”SCOTT“。”T _

答案 2 :(得分:0)

sed -i ".bak" -e 's/"EMP"/"T_EMP"/' ${file_name.sql}

只有1个“EMP”可以更改(在您的样本中)