使用sed从文件中删除与模式不匹配的行

Jxe*_*xek 5 regex bash sed

我想删除没有该表单的文件中的所有行:

something.something,东西,东西

例如,如果文件如下:

A sentence, some words  
ABCD.CP3,GHD,HDID  
Hello. How are you?  
A.B,C,D  
dbibb.yes,whoami,words  
Run Code Online (Sandbox Code Playgroud)

我会留下:

ABCD.CP3,GHD,HDID  
A.B,C,D  
dbibb.yes,whoami,words
Run Code Online (Sandbox Code Playgroud)

我试图分支到sed脚本的末尾,如果我匹配我不想删除的模式但是如果它不匹配则继续并删除该行:

cp $file{,.tmp}
sed "/^.+\..+,.+,.+$/b; /.+/d" "$file.tmp" > $file
rm "$file.tmp"
Run Code Online (Sandbox Code Playgroud)

但这似乎没有任何影响.

我想我可以逐行读取文件,检查是否匹配模式,如果有,则将其输出到文件,但我想使用sed或类似的方法.

hjp*_*r92 4

即可grep成功使用:

grep -E '^[^.]+\.[^,]+,[^,]+,[^,]+$' file > temp
mv temp file
Run Code Online (Sandbox Code Playgroud)