sry开了一个新线程,但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;
Run Code Online (Sandbox Code Playgroud)
DONE
输入如下:
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
Run Code Online (Sandbox Code Playgroud)
imjust赋值变量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
Run Code Online (Sandbox Code Playgroud)
谢谢
也许这会帮助您稍微清理一下语法,以便我们能够理解您要做的事情.
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.
}
Run Code Online (Sandbox Code Playgroud)
如果你不需要BEGIN或END块,它可能看起来更像这样.
{
# Things to be done for each row.
}
Run Code Online (Sandbox Code Playgroud)
这个awk程序为变量dataI分配$ 2,$ 3和$ 4的值,并为每一行打印一次.
{
dataI = sprintf("%s %s %s", $2, $3, $4);
print dataI;
}
Run Code Online (Sandbox Code Playgroud)
该分配对$ 2,$ 3和$ 4的值没有影响.