これはおそらく簡単な質問かもしれませんが、生涯にわたってそれを理解することはできません。次のファイルがありますkeyout.dat
。
Title
1
Variable
-999
-999
0.234
0.123
-999
-999
0.555
ファイルは500,000行の間このように続きます。
-999
すべてを0に設定し、他のすべてを1に設定して新しいファイルを作成したいと思います。明らかに単純なコマンドですが、他のファイルに印刷することはできません。
どんな助けでもいいでしょう。
答え1
比較自体は0または1を返すので、直接印刷できます。
awk '{print $1!=-999;}' file > another_file
数値以外の行を保持するには、次のようにします。
awk '$1!=$1+0 {print $1;next;} {print $1!=-999;}' file > another_file
答え2
あなたが望みTitle
、Variable
ラインがそのまま残っているとします。
awk '!/Title/&&!/Variable/ { $0 = ($1 != -999) }; 1' keyout.dat
または、ファイルの最初の3行を変更せずにそのまま維持する必要がある場合:
awk 'NR > 3 { $0 = ($1 != -999) }; 1' keyout.dat
答え3
そしてawk
:
awk '{$0=($0=="-999")?0:1};1' file
または、次のものを使用できますsed
。
sed -e '/^-999$/s/.*/0/' -e '//!s/.*/1/' file