2016-03-22 6 views
0

У меня есть текстовый файл, похожий наКак извлечь строки, содержащие уникальный текст в колонке

"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» текста с разделителями, разделяемыми пробелом или таблицей.

Использование оболочки Posix (/ usr/bin/sh) под HP-UX.

Я как бы рисую здесь пробел. Любые предложения приветствуются.

ответ

2

вы можете сделать:

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

awk часть будет удалять дублирующиеся строки, оставить только первое вхождение.

У меня нет коробки HP-unix, поэтому я не могу выполнить настоящий тест. Но я думаю, что это должно произойти ...

+0

Мой 'awk'-fu не мог понять это. Работает как шарм. Большое спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^