【问题标题】:Concatenate two-line header by column按列连接两行标题
【发布时间】:2018-08-07 11:33:52
【问题描述】:

我有一个包含两行标题的 CSV 文件:

A, A, B, B, B
a, b, c, d, e
1, 2, 3, 4, 5
2, 3, 4, 5, 6

我想将标题连接到这个表单:

A_a, A_b, B_c, B_d, B_e
1,   2,   3,   4,   5
2,   3,   4,   5,   6

如何在命令行中使用 bash、sed 等来实现?

【问题讨论】:

    标签: csv unix awk command-line


    【解决方案1】:

    Awk解决方案:

    awk 'BEGIN{ FS = OFS = ", " }
         NR == 1{ split($0, a, ", "); next }
         NR == 2{ for(i=1; i <= NF; i++) $i = a[i]"_"$i }1' file
    

    输出:

    A_a, A_b, B_c, B_d, B_e
    1, 2, 3, 4, 5
    2, 3, 4, 5, 6
    

    【讨论】:

      【解决方案2】:

      bash 解决方案:

      #!/bin/bash
      
      argfile=$1
      line1=($(sed -n 1s/,//gp $argfile))
      line2=($(sed -n 2p $argfile))
      line12=()
      
      for ((i=0; i<${#line1[*]}; i++))
      do
          line12+=${line1[$i]}"_"${line2[$i]}" "
      done
      echo $line12
      sed -n '3,$p' $argfile
      

      输出:

      A_a, A_b, B_c, B_d, B_e
      1, 2, 3, 4, 5
      2, 3, 4, 5, 6
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-08
        • 2019-11-19
        • 2021-10-15
        • 2019-01-05
        • 1970-01-01
        • 2022-08-14
        • 2012-05-27
        • 1970-01-01
        相关资源
        最近更新 更多