如何编写shell脚本来获取特定列的第一条记录?

vie*_*vee 3 unix shell awk

以下是一个用于演示的小文件.有两列,我想编写一个shell脚本来获取每个Name的第一次出现.

--- input.txt ---

Name,Count
Linux,2
Unix,10
Linux,10
Unix,4
Windows,6
Run Code Online (Sandbox Code Playgroud)

---期望的output.txt ---

Name,Count
Linux,2
Unix,10
Windows,6
Run Code Online (Sandbox Code Playgroud)

真正的input.txt要大得多(以GB为单位),所以可扩展的东西会很棒.

此外,如果之前已经提出过类似的问题,我很抱歉(我无法通过搜索找到解决方案).

Tom*_*ech 6

这样做:

awk -F, '!seen[$1]++' input.txt
Run Code Online (Sandbox Code Playgroud)

-F,将输入字段分隔符设置为逗号.这意味着$1每一行都是逗号之前的部分(Name,Linux,Unix等).seen是一个数组,它跟踪$1已经看到的值.每次$1都是相同的,seen[$1]递增.该行仅在seen[$1]0 时打印,仅在第一次看到新键时才会显示.