我有一个类似于
的文本文件"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
但它没有按照我的意愿行事,它的“列处理”能力仅限于忽略空格或制表符分隔文本的第一个“x”列。
在HP-UX下使用Posix shell(/ usr / bin / sh)。
我在这里画一个空白。欢迎任何建议。
答案 0 :(得分:2)
你可以这样做:
awk -F'|' '!a[$1]++' file|sort...
awk
部分将删除重复的行,仅保留第一次出现的行。
我没有HP-unix盒子,因此我无法进行真正的测试。但我认为它应该......