【问题标题】:How to add new column based on values of existing column in .txt file unix如何根据 .txt 文件 unix 中现有列的值添加新列
【发布时间】:2021-08-30 20:32:39
【问题描述】:

我有一个这样的 .txt 文件,其中包含六列。我想根据V7_Pheno列的值将第七列V8添加到文件中,Yes应编码为2,No为1,缺失值为@987654328 @

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

【问题讨论】:

  • 听起来像是“awk”的工作。看看这个教程(或另一个 - 你会发现很多!),看看你是否同意:grymoire.com/Unix/Awk.html
  • 谢谢,但是一个示例命令行会很有帮助。

标签: linux bash unix terminal


【解决方案1】:

使用 Perl:

perl -lane 'print join "\t", @F, $.==1 ? "V8" : $F[5]=~/No/ ? 1 : $F[5]=~/Yes/ ? 2 : -9' file.txt | column -t

print join "\t", @F打印每一行的字段,使用制表符作为字段分隔符。

$.==1 ? "V8" 如果这是第一行,则打印一个附加字段V8。

$F[5]=~/No/ ? 1 否则,如果第 6 个字段是 No,则打印一个附加字段 1。

$F[5]=~/Yes/ ? 2 否则,如果第 6 个字段是 Yes,则打印一个附加字段 2。

-9 否则,打印-9。

【讨论】:

    【解决方案2】:

    使用awk:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-29
      • 2019-08-20
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      相关资源
      最近更新 更多