Скрипт, который удаляет любую дублирующую строку и сохраняет исходный порядок - PullRequest
0 голосов
/ 16 марта 2020

Необходимо написать скрипт, который будет обрабатывать стандартный ввод и удалять каждую найденную дублированную строку до конца стандартного ввода. Каждая копия, а также первая опция линейного дубликата будут удалены, независимо от того, есть ли другая или разбросана в записи. Стандартный вывод отображает только те строки (в полученном порядке ввода), которые не имеют повторяющихся записей.
Например, у нас есть файл test.txt, содержащий следующее:

Whatever
You
Want
You
To
Whatever
Have
Here

Вывод должен удалите все дублированные строки и порядок строк такой же, как у ввода:

Want
To
Have
Here

Обратите внимание, что мы не знаем, что содержит файл (это только пример). Я протестировал много команд, но не смог найти ту, которая работает и соответствует требованиям.

IMPORTANT NOTE : I need all occurences of the line to be deleted,

  not only all of them after the first one 

1 Ответ

0 голосов
/ 18 марта 2020

Я понятия не имею, что означает «Каждая копия, но также будет удалена первая опция линейного дубликата», но я думаю, что вы просто ищете:

awk '!a[$0]++'

или, возможно:

awk '!a[$1]++'

Например:

$ cat input
Whatever
You
Want
Whatever 1
You
To
Whatever 1
Have
Here
$ awk '!a[$0]++' input
Whatever
You
Want
Whatever 1
To
Have
Here
$ awk '!a[$1]++' input
Whatever
You
Want
To
Have
Here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...