任何人都可以帮助删除基于分隔符(逗号)的文件中的行,如果行包含较少的列数或错误记录,则需要删除它们。
Input File:
a,b,c,d
a,b,d,f
c,d
a,v,b,h
d,e,v,n
在上面的文件中,如果分隔符小于 4,我必须从文件中删除该行。
Output File :
a,b,c,d
a,b,d,f
a,v,b,h
d,e,v,n
下面的命令给出了一行中的分隔符数量,如果不等于 4,我该如何删除,
egrep -iv '"' file.csv | awk -F',' '{print NF}'
谢谢。
答案1
另一个 perl:如果有 3 个逗号则打印一行。
perl -i.bak -ne 'print if tr/,/,/==3' file
该tr
运算符返回音译的字符数。
答案2
和perl
:
$ perl -F, -i.bak -ane 'print if @F > 3' file
对于perl
> 5.20,您可以-F
不使用-a
and -n
(-F
暗示-a
和-a
暗示-n
)。
或者你可以使用sed
:
$ sed -i.bak -e '/\([^,]*,\)\{3,\}/!d' file
答案3
您可以使用 awk:
awk -F',' 'NF==4' file
如果您可以使用gawk
版本 >= 4.1.0 您可以使用inplace
, more信息。所以它可能是:
gawk -i inplace -v INPLACE_SUFFIX=.bak -F',' 'NF==4' file
答案4
使用 GNU sed:
sed -nE '/^.+,.+,.+,.+$/p' file > output_file