이것은 아마도 간단한 질문일지 모르지만 평생 동안 그것을 알아낼 수는 없습니다. 다음과 같은 파일이 있습니다 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