微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐