如何使用awk对大文件中的数字进行减法

Cha*_*raG 3 linux sed awk text-processing

我有一个像这样的大文件

AT5G44030,TAACARA,1000,+,200,206
AT5G44030,TAACARA,1000,+,418,424
AT5G44030,TAACARA,1000,+,773,779
AT5G44030,NGATT,1000,+,114,118
AT5G44030,NGATT,1000,+,267,271
....................................
Run Code Online (Sandbox Code Playgroud)

我想在最后添加两列,减去 5th - 3rd , 6th - 3rd ,所以最终文件应该如下所示。

AT5G44030,TAACARA,1000,+,200,206,-800,-794
AT5G44030,TAACARA,1000,+,418,424,-582,-576
AT5G44030,TAACARA,1000,+,773,779,-227,-221
AT5G44030,NGATT,1000,+,114,118,-886,-882
AT5G44030,NGATT,1000,+,267,271,-733,-729

.......................................
Run Code Online (Sandbox Code Playgroud)

(注意中间没有空行)

我如何使用awk或 来做到这一点sed?该文件非常大 - 1M 行。

Gui*_*ido 5

awk 'BEGIN { FS=OFS="," } {print $0,$5-$3,$6-$3}' my_file

  • 或设置 OFS="," 以避免在每个新字段之间手动添加 `","`:`awk 'BEGIN { FS=","; OFS=","} {print $0, $5-$3, $6-$3}'` (3认同)