将awk的最后一个值保存为变量

将awk的最后一个值保存为变量,awk,Awk,我正在使用awk解析一个文件,并按照以下方式创建新文件(1…N) awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR}' file awk-F';“”{gsub(/[:blank:][]/,“”);用于(i=1;iNR}'文件 这就是我需要做的,但是我如何将for循环的最后一个值保存为变量,与上述内容一致?因此,例如,如果我循环到6,我想将变量设置为6。您想保存for循环的最后一个值,我认为这是字段数

我正在使用awk解析一个文件,并按照以下方式创建新文件(1…N)

awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR}' file
awk-F';“”{gsub(/[:blank:][]/,“”);用于(i=1;iNR}'文件

这就是我需要做的,但是我如何将for循环的最后一个值保存为变量,与上述内容一致?因此,例如,如果我循环到6,我想将变量设置为6。

您想保存for循环的最后一个值,我认为这是字段数。如果是,请尝试以下操作

var=$(awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR;value=NF} END{print value}' file)
var=$(awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR;value=count++} END{print count}' Input_file)

注意:OP没有提到它,但想把它放在这里,如果创建的文件太多,那么明智的做法是在awk中使用
close
命令,也可以在后台使用
close(NR)关闭它们
这里只是一个例子。

你需要这个变量做什么?你想保持文件编号吗?使用awk'your script'file1 file2 file3…循环的最后一个值是
NF
。第二个脚本是
NR
@karakfa,我知道先生:)但为什么我使用变量,因为在一些AWK不记得版本中,它在结束块中对我不起作用;当我尝试使用“因此”时,我不再相信它,不管怎样,我现在将添加它,先生,干杯。投票支持,Ravinder,这是一个很好的解决方案!但是@karakfa是正确的,因为在结束块中应该根据上下文正确定义
NR
FNR
。这意味着任何不能做到这一点的awk实际上都被破坏了!干杯:)
var=$(awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR} END{print FNR}' Input_file)