Alb*_*lby 14 unix awk command-line
我学会了一种非常方便的方法来删除保留订单的重复行,从删除重复项而不排序文件 - BASH.
比如说,如果您有以下文件,
$cat file
a
a
b
b
a
c
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容删除重复的行:
$awk '!x[$1]++' file
a
b
c
Run Code Online (Sandbox Code Playgroud)
这在运营优先级方面如何运作?
Fre*_*Foo 22
表达式被解析为
!(x[$(1)]++)
Run Code Online (Sandbox Code Playgroud)
所以,从内到外,它是:
$(1)(注意,这$是AWK中的运算符,与Perl不同).x值为字段1; if x是未绑定的变量,将其绑定到新的关联数组.x[$(1)]; 类似于C中的规则适用的规则,因此表达式的值是x[$(1)]增量之前的值,如果x[$(1)]尚未赋值,则该值将为零.x[$(1)]零为零时将产生真值.x[$(1)]获得非零值.所以,下一次,x[$(1)]相同的值$(1)将返回1.然后,对输入中的每一行计算此表达式,并确定是否awk应执行隐含的默认操作,即将行回显到stdout.