相关疑难解决方法(0)

awk '!a[$0]++' 如何工作?

这种单行从文本输入中删除重复的行,无需预先排序。

例如:

$ cat >f
q
w
e
w
r
$ awk '!a[$0]++' <f
q
w
e
r
$ 
Run Code Online (Sandbox Code Playgroud)

我在互联网上找到的原始代码如下:

awk '!_[$0]++'

这让我更加困惑,因为我认为_awk 中有一个特殊的含义,就像在 Perl 中一样,但结果证明它只是一个数组的名称。

现在,我理解了单行背后的逻辑: 每个输入行都用作散列数组中的键,因此,在完成后,散列包含按到达顺序排列的唯一行。

我想了解的是 awk 究竟是如何解释这个符号的。例如,爆炸符号 ( !) 的含义以及此代码片段的其他元素。

它是如何工作的?

awk text-processing

59
推荐指数
3
解决办法
3万
查看次数

标签 统计

awk ×1

text-processing ×1