Bash 删除值为零的行

Bash remove line with zero value

我有一个包含 cpu 值的 1500 行长的文件,但不知何故有 0 个第二行。是否可以删除 bash 命令中仅包含 0 的每一行?

8
0
9
0
10
0
10
0
8
0
9
0

删除所有零

使用grep -v:

-v, --invert-match
             Selected lines are those not matching any of the specified patterns.

命令:

grep -v -e "^0$" file

这个问题是它会删除行 all '0' 行。

删除偶数行

awk 'NR % 2 != 0' file

在这种情况下,您必须确保所有偶数行都是您要删除的行。

删除偶数为“0”的行

awk 'NR % 2 != 0 || ! /0/' file

如果你想每隔一行删除一次,但前提是它包含一个 0,那么这个行会有所帮助:

awk '([=11=] == 0) && (NR % 2 == 0) { next } { print }' cpu_values.txt

意思是,如果输入行等于0,而且是偶数行,则跳过。否则,打印该行。