我学到了一个非常方便的方式来删除保留从
http://goo.gl/sE9yf订单的重复行.
说如果你有以下文件,
说如果你有以下文件,
$cat file a a b b a c
您可以使用以下操作来删除重复的行
$awk '!x[$1]++' file a b c
你能解释一下如何运作的优先级呢?
表达式被解析为
!(x[$(1)]++)
所以,从内而外,它是:
>取当前输入行的字段1,$(1)(注意,$是Awk中的一个运算符,与Perl不同)
> index x,其值为field 1;如果x是未绑定的变量,则将其绑定到新的关联数组
> post-increment x [$(1)];一个类似于C中的规则的规则,所以表达式的值是在增量之前的x [$(1)]的值,如果x [$(1)]尚未被赋值
>否定以前的值,当x [$(1)]为零时,这将产生真值
>实际执行增量,使x [$(1)]获得非零值.所以,下一次,与$(1)相同值的x [$(1)]将返回1.
然后针对输入中的每一行评估该表达式,并确定是否应执行awk的默认默认操作,这是将回显到stdout的行.