如何提取列中包含唯一文本的行
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,所以无法进行实测。但是我觉得应该去...
我有一个类似于
的文本文件"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,所以无法进行实测。但是我觉得应该去...