сортировка списка, сохраняющего одну запись от каждой дублированной строки

я имею, имеют список фильмов, которые я вниз ежедневно загружаю, и прибывает в следующий формат

act-of-valor-2012
act-of-valor-2012
the-possession-2012
the-possession-2012
american-crude-2008
american-crude-2008
when-strangers-appear-2001
like-father-like-son-2005
like-father-like-son-2005
get-him-to-the-greek-2010
get-him-to-the-greek-2010
wall-street-money-never-sleeps-2010
wall-street-money-never-sleeps-2010
christmas-evil-1980
days-of-glory-1944

Я должен сохранить это в том же порядке, но удалить dupl.icate строки, таким образом, это становится

act-of-valor-2012
the-possession-2012
american-crude-2008
when-strangers-appear-2001
like-father-like-son-2005
get-him-to-the-greek-2010
wall-street-money-never-sleeps-2010
christmas-evil-1980
days-of-glory-1944

вид изменяет порядок, у кого-либо есть какие-либо идеи, как я могу выполнить это?

Спасибо

4
задан 14 July 2016 в 23:38

2 ответа

Вы хотите эти uniq команда.

От man uniq:

 Filter adjacent matching lines from INPUT (or standard input), writing to OUTPUT (or standard output).

       With no options, matching lines are merged to the first occurrence.

Использование это следующим образом:

uniq movies.txt

Вывод, как желаемый.

6
ответ дан 1 December 2019 в 08:59

Версия AWK:

awk '{array[i++]=$0}END{for(j=0;j<=i;j++) if(array[j] != array[j-1]){print array[j]}  }' movies.txt 

В основном то, что это делает, является считанными данными в массив, и распечатайте, только они выравнивают, которые не имеют предыдущей строки как дубликата.

Более короткий путь был бы как показанный здесь:

$ awk '!a[$0]++' movies.txt                                                     
act-of-valor-2012
the-possession-2012
american-crude-2008
when-strangers-appear-2001
like-father-like-son-2005
get-him-to-the-greek-2010
wall-street-money-never-sleeps-2010
christmas-evil-1980
days-of-glory-1944
4
ответ дан 1 December 2019 в 08:59

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

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