Performance awk-快速选择行而不丢失值

Performance awk-快速选择行而不丢失值,performance,awk,scripting,Performance,Awk,Scripting,给定一个csv文件,我需要跳过带有任何空字段的行。字段数x是固定的,已知的,但很大 使用简单的NF==x{commands}失败,因为NF是基于分隔符进行计数的,它们的出现可靠且独立于值的出现 另一方面,在所有字段上循环成功,但似乎是一种相当缓慢的方法: { for ( i=1 ; i<=NF ; i++ ) { if ( $i == "" ) { next } else if ( i == NF ) { commands } } } 或者不使用字段定义 $ aw

给定一个csv文件,我需要跳过带有任何空字段的行。字段数
x
是固定的,已知的,但很大

使用简单的
NF==x{commands}
失败,因为
NF
是基于分隔符进行计数的,它们的出现可靠且独立于值的出现

另一方面,在所有字段上循环成功,但似乎是一种相当缓慢的方法:

{
for ( i=1 ; i<=NF ; i++ ) {
    if ( $i == "" ) { next }
    else if ( i == NF ) { commands }
    }
}

或者不使用字段定义

$ awk '!/(^|,)(,|$)/' file

11,12,13,14,15,16
41,42,43,44,45,46

这也可以用
sed
来完成。

grep-v'、\\\\^、\\\\\^、$'文件
或GNU-sed:
sed-E'/(、、、\^、\\^、$)/d'文件
我喜欢这样,因为字段仍然是分开的,可以直接进一步处理。
$ awk '!/(^|,)(,|$)/' file

11,12,13,14,15,16
41,42,43,44,45,46