我想使用功能强大的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
是否应该有一些特殊注意事项。
错误如下:
答案 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'"');" ./