我需要替换
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 根据你的命令替换每一行,并把每一行不管你的替换是否发生。