如何在 perl/Shell 中根据 Delimeter 删除行?

Wil*_*m R 1 shell sed awk perl

任何人都可以帮助删除基于分隔符(逗号)的文件中的行,如果行包含较少的列数或错误记录,则需要删除这些行。

Input File:

a,b,c,d
a,b,d,f
c,d
a,v,b,h
d,e,v,n
Run Code Online (Sandbox Code Playgroud)

在上面的文件中,如果分隔符小于 4,我必须从文件中删除该行。

Output File :

a,b,c,d
a,b,d,f
a,v,b,h
d,e,v,n
Run Code Online (Sandbox Code Playgroud)

下面的命令给了我一行中的分隔符数,如果它不等于 4,我如何删除,

egrep -iv '"' file.csv | awk -F',' '{print NF}' 
Run Code Online (Sandbox Code Playgroud)

谢谢。

gle*_*man 6

另一个 perl:如果有 3 个逗号,则打印一行。

perl -i.bak -ne 'print if tr/,/,/==3' file
Run Code Online (Sandbox Code Playgroud)

tr操作符返回音译的字符数。