如何使用grep查找包含" \ n"的字符串炭?

时间:2014-12-16 08:20:26

标签: bash grep

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

    fprintf('Error: invalid indexes!\n');

我尝试了以下命令,但它显示错误。

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

我已尝试过here中提供的解决方案,但似乎无效。

你能提出一些建议吗?

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

    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'

我不确定上面命令中的replaced_strings是否应该有一些特殊注意事项。

错误如下: enter image description here

3 个答案:

答案 0 :(得分:2)

试试这个:

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

fprintf('Error: invalid indexes!\n');

使用-E选项并在单引号字符串之外转义内部单引号'\''

或者,如果按'"'"'转义单引号,如下所示:

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

答案 1 :(得分:1)

以我认为你想要的替换方式进行的方式

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

实施例

输入

dsfdsf
sdfds
fprintf('Error: invalid indexes!\n');
sdf
dsf
sdf

输出继电器

dsfdsf
sdfds
?
sdf
dsf
sdf

答案 2 :(得分:0)

尝试

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