我在格式化文件时遇到问题。我想从第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
在那一刻,我正以非常漫长的方式做到这一点:
awk 'NR == 1 { $4 = "diff." } NR >= 0 { $4 = $2 - $3 } 1' input.bed > input_B.bed
然后在命令行上运行grep:
grep -wn 0 input_B.bed
并删除vi中的行。
任何有关更轻松/更快捷方式的建议都会非常棒!
答案 0 :(得分:4)
简单如下:
awk '$2 - $3' infile >outfile
因为awk有默认的打印操作。因此,0
(true
)的结果会触发它。
它产生:
chr9 139888759 139888925 18451
chr9 139965116 139965298 18453
chr9 139981357 139981444 18454