Sed tem espaço para comparações

1

Existe alguma maneira de comparar (parte de) o espaço de espera com o espaço padrão para sed? Por exemplo, eu tenho as seguintes linhas

name1 id1 12-04-2016
name1 id2 12-03-2016
name2 id3 12-04-2016
name2 id4 12-03-2016

Meu objetivo final é remover a primeira linha em que o nome é duplicado. Então meu processo de pensamento foi

1) compare o campo do nome para manter o espaço.

2) Se corresponder, exclua a linha no espaço padrão

3) Se não, copie a linha para manter o espaço.

No entanto, não consigo encontrar nada que detalhe como comparar o que está no espaço de padrão com o que está no espaço de armazenamento (somente como copiar de e para). Isso não é possível?

    
por deerlord 14.12.2016 / 19:06

1 resposta

0

É possível. Você pode acrescentar o conteúdo do espaço de espera ao espaço padrão e usar uma referência anterior para verificar a igualdade:

sed -n '{G;s/\([^ ]+\)\(.*\)\n//;tl;s/\n//p;:l;n}' names
    
por 16.12.2016 / 09:49

Tags