使用awk从矩阵中提取字段

时间:2012-05-22 13:25:24

标签: sed awk

我正在尝试使用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
.
.
.
.

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

这是我的小脏话:

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

答案 2 :(得分:0)

这可能适合你(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