我试图在一个大文件中搜索包含该字符串的行!!!
,并将这些行输出到另一个文件。
但是,shell 将其解释!!!
为 shebang,并将我之前的命令插入为搜索条件(!
末尾有一个额外的命令)
我使用的命令是:
cat file_to_search.txt | grep "!!!" > output.txt
注意:使用RHEL7.7
if 会产生影响
答案1
由于感叹号是特殊字符(否定),因此您需要使用“\”对其进行转义,以便 shell 在 grepping 时按字面意思使用该字符。以下内容按要求匹配连续三个感叹号(!!!):
cat file_to_search.txt | grep "\!\!\!" > output.txt
或者你可以使用附加量词,如下所示:
cat file_to_search.txt | grep "\!\{3\}" > output.txt
这里有一个正则表达式搜索的来源,以及特殊字符源。