如何提取列中包含唯一文本的行

How to extract lines containing unique text in a column

我有一个类似于

的文本文件
"3"|"0001"
"1"|"0003"
"1"|"0001"
"2"|"0001"
"1"|"0002"

即包含引号字符串的竖线分隔文本文件。

我需要做的是:

首先,提取包含第一列中每个值的第一行,生成

"3"|"0001"
"1"|"0003"
"2"|"0001"

然后,按第一列中的值排序,得到

"1"|"0003"
"2"|"0001"
"3"|"0001"

执行排序很容易 - sort -k 1,1 -t \| - 但我一直坚持提取文件中包含第一列中每个值的第一行。我想过使用 uniq 但它并没有做我想做的事情,而且它的 "column-handling" 能力仅限于忽略 space 的第一个 'x' 列-or-tab delimited文字.

在 HP-UX 下使用 Posix shell (/usr/bin/sh)。

我在这里有点空白。欢迎任何建议。

你可以做到:

awk -F'|' '!a[]++' file|sort...

awk 部分将删除重复的行,只保留第一次出现的行。

我没有HP-unix box,所以无法进行实测。但是我觉得应该去...