Isso seria muito mais fácil se tivéssemos o arquivo inteiro. Você está interessado apenas nas linhas que começam com host=
ou qualquer dos 2os campos? Para uma solução geral, tente isto:
perl -e '@file=<>;
foreach(map{/.+?\s+(.+)/;}@file){$dup{$_}++};
foreach(@file){
chomp;
/.+?\s+(.+)/;
if($dup{$1}>1 && not defined($p{$1})){
print "$_ acked\n";
$p{$1}++;}
else{print "$_\n"}
}' test.html
O script acima lerá primeiro o arquivo inteiro, verificará se há duplicatas e imprimirá cada linha duplicada seguida de "acked".
A coisa toda é muito mais simples se pudermos supor que você está interessado apenas em linhas que começam com down X
:
grep down test.html | awk '{printf $2}' |
perl -e 'while(<>){$dup{$_}++}open(A,"test.html");
while(<A>){
if(/host=\s+(.+)/ && defined($dup{$1})){
chomp; print "$_ acked\n"}
else{print}}'