awk中的多个命令

时间:2011-11-28 21:33:51

标签: awk

打开一个新线程但是awk让我疯了! ><即时尝试在单个awk中运行一些命令分配,但我无法让它工作,请帮助,如果这是你的ez:P我不能让语法工作

编辑:即时通讯使用/ bin / bash

for f in `seq $nlinpE $loopE`; 
do 

awk  -F ","'  
BEGIN {}    
'$f'  { dataI2[$f]=$2;
    dataI3[$f]=$3;
    dataI4[$f]=$4;
    noD1[$f]=$dataI1[$f];
    noD2[$f]=$dataI2[$f];
    noD3[$f]=$dataI3[$f];
    noD1i[$f]=`echo "$nlinpN1 + $dataI1"|bc -l`;
    noD2i[$f]=`echo "$nlinpN1 + $dataI2"|bc -l`;
    noD3i[$f]=`echo "$nlinpN1 + $dataI3"|bc -l`;
    }   
'${noD1i[$f]}' { 
    dataIi2[$f]=$2;
    dataIi3[$f]=$3;
    dataIi4[$f]=$4;
    }

'${noD2i[$f]}'  { 
    dataIii2[$f]=$2;
    dataIii3[$f]=$3;
    dataIii4[$f]=$4;
    }

'${noD2i[$f]}'  { 
    dataIiii2[$f]=$2;
    dataIiii3[$f]=$3;
    dataIiii4[$f]=$4;
    }
END{}                 
' <aoa_5.inp;

完成

输入就像:

 17,   3.22854114,  0.562598288,  0.384291202
 18,   2.96085286,  0.085116826,  0.285071939
 19,   3.40070796,   2.27838659,  0.302027524
 20,   3.20035744,  0.333615214,  0.262585849
 21,   2.85644341,  0.258691043,  0.369726121
 22,   3.73537922,    1.3267405,  0.295917094
 23,   3.69372559,   1.32601321,  0.306054831
 24,   3.28857207,   0.63199228,  0.378117412
 25,   3.27523994,  0.695856452,  0.377585977

调整变量atm,得到没有逗号的数字
我得到这种语法类型的错误:

awk: 9: unexpected character '`'
awk: 10: unexpected character '`'
awk: 11: unexpected character '`'
(standard_in) 2: syntax error
(standard_in) 2: syntax error
awk: line 1: syntax error at or near {
^C

THX

1 个答案:

答案 0 :(得分:6)

也许这会帮助您稍微清理一下语法,以便我们了解您的目标。

BEGIN和END块是可选的。暂时忽略模式,awk程序可能看起来像这样。

BEGIN {
    # Things to be done before you start processing rows.
}
{
    # Things to be done for each row.
}
END {
    # Things to be done after processing the last row.
}

如果你不需要BEGIN或END块,它可能看起来更像这样。

{
    # Things to be done for each row.
}

这个awk程序为变量dataI分配$ 2,$ 3和$ 4的值,并为每行打印一次。

{
  dataI = sprintf("%s %s %s", $2, $3, $4);
  print dataI;
}

该分配对$ 2,$ 3和$ 4的值没有影响。