$ awk -F, '($1 == "I" || $1 != p) && p = $1' file.csv
I,TEST1
H,TEST2
I,TEST4
I,TEST5
H,TEST6
I,TEST7
- Se a primeira coluna de uma linha for
I
, a variável p
(para "anterior") será definida como I
e a linha será impressa.
- Se a primeira coluna não for
I
, mas não for a mesma que a anterior (ou seja, não é repetida H
), a variável p
está definido como H
e a linha é impressa.
- Se a primeira coluna não for
I
e se também for igual à primeira coluna anterior, a linha será ignorada.
Isso removerá todas as linhas cuja primeira coluna é igual à primeira coluna anterior, exceto as linhas com I
como primeira coluna.
Estou usando a atribuição p = $1
como condicional. Se for realizado, e se o valor for diferente de zero (será diferente de zero em todas as instâncias dadas as informações do exemplo na pergunta), então terá o efeito colateral que a linha atual é impressa.
Se a primeira coluna contiver zeros, altere o p = $1
para ((p = $1) || 1)
.