【发布时间】: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
.
.
.
.
【问题讨论】:
我正在尝试使用 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
.
.
.
.
【问题讨论】:
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
【讨论】:
这是我的小脏awk:
awk '{
print $1 ".value1=" $2;
print $1 ".value2=" $3;
print $1 ".value3=" $4;
}' data
【讨论】:
这可能对你有用(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
【讨论】: