sed 在搜索中不起作用

sed 在搜索中不起作用

我需要替换 DatabaseConnection.GetConnection()DatabaseConnection.GetConnection(_connectionString)

使用 grep (GNU grep) 3.1

grep GetConnection() CustomerRepository.cs

产量

bash: syntax error near unexpected token `('

然而

grep GetConnection\(\) CustomerRepository.cs`

输出

using (IDbConnection connection = DatabaseConnection.GetConnection())

符合预期

使用 sed (GNU sed) 4.8

sed -e 's/GetConnection()/GetConnection(_connectionString)/' CustomerRepository.cs

输出输入文件的全部内容,就像我转义搜索括号时一样。

完全不知所措,我需要做什么才能完成这项工作?

答案1

“grep GetConnection() CustomerRepository.cs”

抱怨是正确的,因为“(”是由 shell 特殊解释的,并且按照你的方式使用它没有任何意义。

将“(”转义为“(”,将“)”转义为“)”是一个很好的做法,但是将整个参数放在引号中会更好:

grep 'GetConnection()' CustomerRepository.cs

至于你的第二次尝试,

sed -e 's/GetConnection()/GetConnection(_connectionString)/' CustomerRepository.cs

sed 根据你的命令替换每一行,并把每一行不管你的替换是否发生。

相关内容