Performance awk-快速选择行而不丢失值
给定一个csv文件,我需要跳过带有任何空字段的行。字段数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
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