A comparação em si retorna 0 ou 1, então você pode imprimir isso.
awk '{print $1!=-999;}' file > another_file
Caso você deseje manter linhas não numéricas:
awk '$1!=$1+0 {print $1;next;} {print $1!=-999;}' file > another_file
Esta pode ser uma pergunta simples, mas não consigo entender a vida de mim. Eu tenho um arquivo chamado keyout.dat
, que se parece com isso:
Title
1
Variable
-999
-999
0.234
0.123
-999
-999
0.555
O arquivo continua assim por 500.000 linhas.
Eu quero criar um novo arquivo em que todos os -999
estejam definidos como 0 e todo o restante esteja definido como 1. Tenho certeza de que é um comando simples, mas estou tendo problemas para imprimir outro arquivo.
Qualquer ajuda seria ótima.
A comparação em si retorna 0 ou 1, então você pode imprimir isso.
awk '{print $1!=-999;}' file > another_file
Caso você deseje manter linhas não numéricas:
awk '$1!=$1+0 {print $1;next;} {print $1!=-999;}' file > another_file
Supondo que você deseja que as linhas Title
e Variable
estejam intactas:
awk '!/Title/&&!/Variable/ { $0 = ($1 != -999) }; 1' keyout.dat
Ou, se as três primeiras linhas do arquivo não forem alteradas:
awk 'NR > 3 { $0 = ($1 != -999) }; 1' keyout.dat
com awk
:
awk '{$0=($0=="-999")?0:1};1' file
Ou você pode usar sed
:
sed -e '/^-999$/s/.*/0/' -e '//!s/.*/1/' file