$ 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) .