Eu tenho um arquivo delimitado por tabulação que se parece com isso:
gene v1 v2 v3 v4
g1 NA NA NA NA
g2 NA NA 2 3
g3 NA NA NA NA
g4 1 2 3 2
O número de campos em cada linha é fixo e o mesmo. Eu quero remover essas linhas do arquivo acima, onde todos os campos de cada linha da coluna 2 até a última são NA. Então a saída deve ficar assim:
gene v1 v2 v3 v4
g2 NA NA 2 3
g4 1 2 3 2
Com
awk
:Percorra os campos começando no segundo campo e imprima a linha se um campo que não contém
NA
for encontrado. Em seguida, quebre o laço.Usando GNU sed
Breve explicação:
g[0-9]\+\(\s*NA\s*\)\+$
é uma correspondência de regexg
seguida por pelo menos um dígito, então qualquer número deNA
s com espaços opcionais entre até o final da linha.sed -e '/<regex>/d'
exclui todas as linhas que correspondem<regex>
Um regexp mais padrão com o mesmo significado seria:
Com
all
do módulo Perl List::Util:Com
grep
:Isso faz com que o grep não exiba (
-v
) linhas onde a linha inteira (-x
) corresponde:Você poderia tentar: