Сортировка двух столбцов с видом и uniq

У меня есть файл, которому нужна сортировка в особенном методе, но я не могу выяснить, как сделать это.

Я попробовал следующую команду, но она не дает мне, что я хочу:

sort -t" " -k1,1 Original_File | uniq -d > Desired_Output

Original_File:

User1 US
User1 NG
User2 US
User3 US
User4 US
User4 EN
User5 US

Desired_Output:

User1 US
User1 NG
User4 US
User4 EN
0
задан 27 August 2014 в 21:25

2 ответа

Можно извлечь первый столбец, взять дубликаты и grep их назад из файла снова:

cut -f1 -d' ' Original_File | sort | uniq -d | grep -wFf- Original_File
3
ответ дан 7 October 2019 в 04:55

Ввод и вывод в качестве примера был обновлен; примеры в первом разделе используют исходный вход в качестве примера для показа примеров детали на вариантах:

Исходный вход в Original_File:

User1 US
User1 NG
User2 US
User3 US
User4 US
User5 US

Можно пропустить userN часть для uniq с опцией -f пропускать ведущие поля - разделенный пространством:

$ sort -t" " -k1,1 Original_File | uniq -f 1 
User1 NG
User1 US

Для того же порядка как в выводе в качестве примера можно инвертировать вид - это изменит значения "маркировки" уникальных строк:

$ sort -r -t" " -k1,1 Original_File | uniq -f 1
User5 US
User1 NG

Отметьте User5 в первой строке результата. Если это не приемлемо, просто вид снова:

$ sort -t" " -k1,1 Original_File | uniq -f 1 | sort  -t" " -k1,1 -r
User1 US
User1 NG

Если UserN часть не разделяется пространством, но имеет фиксированную длину, можно пропустить его для uniq с опцией -s:

$ sort -t" " -k1,1 Original_File | uniq -s 6
User1 NG
User1 US

С обновленным входом в качестве примера это - команда для создания необходимого порядка сортировки:

$ sort -t" " -k1,1 Original_File | uniq -f 1 | sort -t" " -k1,1  -k2,2r
User1 US
User1 NG
User4 US
User4 EN

это сортирует второе поле к обратному порядку.

2
ответ дан 7 October 2019 в 04:55

Другие вопросы по тегам:

Похожие вопросы: