【发布时间】:2017-09-13 12:05:34
【问题描述】:
为我的应用程序创建搜索和替换功能,我正在运行一个包含 3 个文件的测试场景, 大批 脚本 测试
我正在尝试转义双引号,但它不起作用
脚本文件包含
variableName=$1
sed "s#data\-field\=\"${variableName}\.name\"#data\-field\=${variableName}\.name data\-type\=dropdown data\-dropdown\-type\=${variableName}#g" test
测试文件包含
data-field=“fee_category.name”
data-field=“tax_type.name”
数组文件包含
fee_category
tax_type
没有错误代码,输出就是我输入的内容,因为 sed 命令找不到它要查找的内容,如果我不在 ${VariableName} 旁边使用双引号并将它们从测试文件中删除工作正常。
【问题讨论】:
-
您的示例输入包含non-ASCII double quotes,而
sed命令与"不匹配。 -
您要搜索文字字符串还是正则表达式?如果它是正则表达式,您是否要启用捕获组?是否要在替换文本中启用反向引用元字符(例如
&或\1)? -
我正在搜索文字字符串并使用正则表达式替换它
-
也许我没有说清楚。如果
variableName的值为foo.bar,您是要搜索文字字符串foo.bar还是要搜索正则表达式foo<any character>bar,例如,前者将不匹配foo8bar而后者会匹配吗? -
sed 中的双引号通常不需要转义。如果这些字符不是 ascii 双引号(十六进制 022),我们需要确定它们是什么。
head -n2 testfile | od -t x1c的输出是什么?