Bash 如何使用grep查找包含“\n”字符的字符串?

Bash 如何使用grep查找包含“\n”字符的字符串?,bash,grep,Bash,Grep,我想使用强大的grep在目录中的MATLAB源文件中查找包含以下句子的字符串 fprintf('Error: invalid indexes!\n'); 我尝试了以下命令,但它显示错误 grep -rl "fprintf(\'Error: invalid indexes!\\n\');" ./ 我尝试了中介绍的解决方案,但似乎不起作用 你能给我一些建议吗 此外,在找到匹配的字符串后,我想将它们替换为以下句子: if(length(invalid_idx)>0)

我想使用强大的grep在目录中的MATLAB源文件中查找包含以下句子的字符串

    fprintf('Error: invalid indexes!\n');
我尝试了以下命令,但它显示错误

    grep -rl "fprintf(\'Error: invalid indexes!\\n\');" ./
我尝试了中介绍的解决方案,但似乎不起作用

你能给我一些建议吗

此外,在找到匹配的字符串后,我想将它们替换为以下句子:

    if(length(invalid_idx)>0) fprintf('Error: invalid indexes!\n'); end
我知道我们可以使用以下命令:

    grep -rl "need_to_replaced_strings" ./ | xargs sed -i 's/need_to_replaced_strings/replaced_strings/g'
我不确定上面命令中替换的_字符串是否应该有一些特殊考虑

错误如下: 试试看

grep -rlF "fprintf('Error: invalid indexes"'!\n'"');" ./
试试这个:

$ grep -Erl 'fprintf\('\''Error: invalid indexes!\\n'\''\);' ./

fprintf('Error: invalid indexes!\n');
使用-E选项并将内部单引号“\转义到单引号字符串之外

或者,如果按以下方式通过“”转义单引号:

$ grep -Erl 'fprintf\('"'"'Error: invalid indexes!\\n'"'"'\);' ./

我想你想要的替代品太棒了

awk -vS="'" '{sub("fprintf\\("S"Error: invalid indexes!\\\\n"S"\\);","?",$0)}1' file
范例

输入 输出
但是它显示了错误,请发布这些错误消息。您尝试过grep的-F选项吗?@Jdamian,谢谢!我已经用错误信息更新了帖子,请检查一下。我看你还没有试过我的答案。@Jdamian,谢谢!我试过你的答案,但似乎有问题。谢谢你提供候选解决方案!我已经用手一根一根地替换了那些弦。。。。
dsfdsf
sdfds
fprintf('Error: invalid indexes!\n');
sdf
dsf
sdf
dsfdsf
sdfds
?
sdf
dsf
sdf