unix – 解释这个重复的行删除,订单保留,一行awk命令

我学到了一个非常方便的方式来删除保留从 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的行.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...