1

我在格式化文件时遇到问题。我想从第 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 中的行。

任何关于更简单/更快方法的建议都会很棒!

4

1 回答 1

4

很简单:

awk '$2 - $3' infile >outfile

因为有一个默认的打印动作。因此,0( true) 的结果不同会触发它。

它产生:

chr9    139888759       139888925       18451
chr9    139965116       139965298       18453
chr9    139981357       139981444       18454
于 2013-08-22T09:39:04.120 回答