1

下面是排序的(基于第一列)选项卡划定的名为 file.txt 的文件

barbie  325 social activist
david   214 IT professional
david   457 mathematician
david   458 biologist
john    85  engineer
john    98  doctor
peter   100 statistician

我想使用选项在第一列的基础上运行 uniq 命令(-t 和 -k 在排序命令的情况下)

uniq -d (-t$'\t' -k1,1) file.txt [this is incorrect syntax in bracket , but i want to run it in similar way]

好吧,这很容易,但我无法找到自己的方式。

这样我就可以得到输出:

david   214 IT professional
john    85  engineer

帮助我,在此先感谢:)

4

1 回答 1

4

Debianuniq曾经有此选项,但出于兼容性原因已将其删除。您可以轻松创建自己的 AWK 或 Perl 脚本。这仅打印第一次出现第一个字段的行:

awk -F '\t' '!x[$1]++' file.txt

x[$1]是第一个字段 ( $1) 内容的关联数组;它为每一行递增,但它也是指定是否应打印当前行的条件;使用否定,只有当这个字段值之前没有遇到过时才为真。(提醒:AWK 脚本的一般形式是零个或多个,condition { action }两个部分都是可选的;如果{action}缺少,则默认操作是打印当前行。[如果缺少条件,则无条件执行操作。])

于 2012-05-11T06:19:22.337 回答