【问题标题】:Extract fields from matrix using awk使用 awk 从矩阵中提取字段
【发布时间】:2012-05-29 00:00:57
【问题描述】:

我正在尝试使用 awk 从文件“input.dat”中的矩形矩阵中提取字段,如下所示

Name value1 value2 value3
A 0 100 200
B 100 0 200
C 0 0 0
D 50 50 50
E 0 90 90 

获取输出

A.value1=0
A.value2=100
A.value3=200
B.value1=100
.
.
.
.

【问题讨论】:

    标签: sed awk


    【解决方案1】:
    awk 'NR==1 { split( $0, a); next } 
        { for( i=2; i <= NF; i++ )
            print $1 "." a[i] "=" $i
        }' input.dat
    

    或者:

    awk 'NR==1 { split( $0, a); next }
        { for( i=2; i <= NF; i++ ) 
            printf "%s.%s=%s\n", $1, a[i], $i
        }' input.dat
    

    【讨论】:

      【解决方案2】:

      这是我的小脏awk:

      awk '{ 
          print $1 ".value1=" $2; 
          print $1 ".value2=" $3; 
          print $1 ".value3=" $4;  
          }' data
      

      【讨论】:

        【解决方案3】:

        这可能对你有用(GNU sed):

         sed '1{s/\S*\s*//;h;d};G;s/^/\n/;:a;s/\n\(\S*\) \(\S\+\)\([^\n]*\)\n\(\S*\) */\1.\4=\2\n\n\1\3\n/;ta;s/\n\n\S* *\n$//' file
        

        【讨论】:

          猜你喜欢
          • 2013-08-20
          • 1970-01-01
          • 2021-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-24
          相关资源
          最近更新 更多