首页 > 解决方案 > 如何根据 .txt 文件 unix 中现有列的值添加新列

问题描述

我有一个这样的 .txt 文件,其中包含六列。我想V8根据列的值将第七列添加到文件V7_Pheno中,其方式Yes应编码为2, Noas1和缺失值-9

V1       V2     V3      V4      V6     V7_Pheno
2253792 20482   NA      DNA     1       Yes
2253802 20491   NA      DNA     4       Yes
2253816 20503   NA      DNA     0       No
2253820 20508   NA      DNA     4       Yes
2253821 20509   NA      DNA     0       No
2253824 20511   NA      DNA     0       No
2253826 20513   NA      DNA     3       Yes
2253829 20516   NA      DNA     6       Yes

我正在寻找的结果 .txt 文件应该是这样的

V1       V2     V3      V4      V6     V7_Pheno   V8
    2253792 20482   NA      DNA     1       Yes    2
    2253802 20491   NA      DNA     4       Yes    2
    2253816 20503   NA      DNA     0       No     1
    2253820 20508   NA      DNA     4       Yes    2
    2253821 20509   NA      DNA     0       No     1
    2253824 20511   NA      DNA     0       No     1
    2253826 20513   NA      DNA     3       Yes    2
    2253829 20516   NA      DNA     6       Yes    2

标签: linuxbashunixterminal

解决方案


使用awk

awk 'NR==1{$7="V8";print;next}\
 $6 == "Yes" {$7="2"};\
 $6 == "No" {$7="1"}1' a.txt |column -t
  1. 第一行在V8标题中打印
  2. 如果 6th col: 的V7_Pheno值为Yes,则$7 = "2"
  3. 如果 6th col: 的V7_Pheno值为No,则$7 = "1"
  4. column -t:为了更好的格式

推荐阅读