代码用于从包含命令行历史记录的 histroy.txt 文件中删除重复条目。
BEGIN{
if (data[$0]++ == 0)
lines[++count] = $0;
}
END {
for(i=1; i<count; i++)
print lines[i];
}
Run Code Online (Sandbox Code Playgroud)
data
代码中有什么以及为什么要与它进行比较0
?
这个意图记住输入中的 uniq 行。
正如 Jeff Schaller 指出的那样,$0
在BEGIN
块中是未定义的。
一个更正确的代码应该是
{
if (data[$0]++ == 0)
lines[++count] = $0;
}
END {
for(i=1; i<count; i++)
print lines[i];
}
Run Code Online (Sandbox Code Playgroud)
甚至
!data[$0]++ { lines[++count] = $0; }
END {
for(i=1; i<count; i++)
print lines[i];
}
Run Code Online (Sandbox Code Playgroud)
第一次出现的data[$0]
行将等于 0 并line[ ]
接收该行。
测试后,data[$0]
将被增量(++
是一个后增量)并且测试将评估为假对于具有相同内容的行。
该END
语句按顺序打印所有行。
归档时间: |
|
查看次数: |
80 次 |
最近记录: |