加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:52:05 所属栏目:安全 来源:网络整理
导读:我学到了一个非常方便的方式来删除保留从 http://goo.gl/sE9yf订单的重复行. 说如果你有以下文件, $cat fileaabbac 您可以使用以下操作来删除重复的行 $awk '!x[$1]++' fileabc 你能解释一下如何运作的优先级呢? 表达式被解析为 !(x[$(1)]++) 所以,从内而外
我学到了一个非常方便的方式来删除保留从 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的行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读