这可能是一个简单的问题,但我一生都无法弄清楚。我有一个名为的文件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
或者,如果文件中的前三行应保持不变:
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