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

前端之家收集整理的这篇文章主要介绍了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的行.

原文链接:https://www.f2er.com/bash/386593.html

猜你在找的Bash相关文章