grep:无效的正则表达式

tut*_*ing 5 linux bash shell grep text-files

我有一个文本文件,如下所示:

haha1,haha2,haha3,haha4
test1,test2,test3,test4,[offline],test5
letter1,letter2,letter3,letter4
output1,output2,[offline],output3,output4
check1,[core],check2
num1,num2,num3,num4
Run Code Online (Sandbox Code Playgroud)

我需要排除所有那些带有"[]"的行并将它们输出到另一个文件,而不是那些带有"[]"的行.

我目前正在使用此命令:

grep ",[" loaded.txt | wc -l > newloaded.txt
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误:

grep:无效的正则表达式

Joh*_*ica 9

使用grep -F治疗搜索模式为固定字符串.你也可以wc -lgrep -c.

grep -cF ",[" loaded.txt > newloaded.txt
Run Code Online (Sandbox Code Playgroud)

如果你很好奇,那[就是一个特殊的角色.如果你不使用-F那么你需要用反斜杠来逃避它.

grep -c ",\[" loaded.txt > newloaded.txt
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我不知道为什么你还在使用wc -l......?从您的问题描述中,听起来grep -v可能更合适.-v反转grep的正常输出,打印匹配的行.

grep -vF ",[" loaded.txt > newloaded.txt
Run Code Online (Sandbox Code Playgroud)