减去两列,然后使用awk/grep和vi删除输出等于0的行

减去两列,然后使用awk/grep和vi删除输出等于0的行,awk,grep,Awk,Grep,我在格式化文件时遇到问题。我想从第2列和第3列中减去值,如果结果为0,我想删除该行并将文件保存到单独的输出文件中 以下是输入文件: chr9 139844640 139844640 18450 chr9 139888759 139888925 18451 chr9 139965116 139965298 18453 chr9 139981357 139981444 18454

我在格式化文件时遇到问题。我想从第2列和第3列中减去值,如果结果为0,我想删除该行并将文件保存到单独的输出文件中

以下是输入文件:

chr9    139844640       139844640       18450
chr9    139888759       139888925       18451
chr9    139965116       139965298       18453
chr9    139981357       139981444       18454
输出文件:

chr9    139888759       139888925       18451
chr9    139965116       139965298       18453
chr9    139981357       139981444       18454
chr9    139888759       139888925       18451
chr9    139965116       139965298       18453
chr9    139981357       139981444       18454
此时此刻,我正以冗长的方式进行:

awk 'NR == 1 { $4 = "diff." } NR >= 0 { $4 = $2 - $3 } 1' input.bed > input_B.bed
然后在命令行上运行grep:

grep -wn 0 input_B.bed
删除vi中的行

任何关于更简单/更快的方法的建议都会非常好

简单到:

awk '$2 - $3' infile >outfile
因为有一个默认的打印操作。因此,
0
true
)的不同结果会触发它

它产生:

简单到:

awk '$2 - $3' infile >outfile
因为有一个默认的打印操作。因此,
0
true
)的不同结果会触发它

它产生: