在awk中定义字符串

在awk中定义字符串,awk,Awk,我对awk有问题,我想根据整数值NF定义一个字符串变量(str),以便在另一个函数中使用它: 如果NF=3 str=“$1$2$3” 如果NF=4 str=“$1$2$3$4”…等 如何做到这一点只需使用str=$0 如果(NF==3),则str=“$1$2$3” 如果该行有3个字段,那么显然$0是所有3个字段的组合。 如果您希望输出字段分隔符为“”,则只需提及类似OFS=“” 例如: awk -F";" 'BEGIN{OFS=" "}{str=$0;print str}' file 如果您只

我对awk有问题,我想根据整数值NF定义一个字符串变量(str),以便在另一个函数中使用它: 如果NF=3 str=“$1$2$3”

如果NF=4 str=“$1$2$3$4”…等 如何做到这一点只需使用str=$0

如果(NF==3),则str=“$1$2$3”

如果该行有3个字段,那么显然$0是所有3个字段的组合。 如果您希望输出字段分隔符为“”,则只需提及类似OFS=“”

例如:

awk -F";" 'BEGIN{OFS=" "}{str=$0;print str}' file

如果您只想了解如何定义和使用变量,请尝试以下操作:

#!/bin/awk -f
{
        print NF
        if (NF==3){
                str=$1 $2 $3 " says hello 3"
        }
        if (NF==2){
                str=$1 $2 
        }
        print str
}

如果我没听错的话,你想要这个

kent$echo "a b c d"|awk '{for(i=1;i<=NF;i++) s=s"$"i" ";print s}' 
$1 $2 $3 $4 

kent$echo“a b c d”| awk'{for(i=1;iNF值是可变的,我不知道NF的值,我尝试了此代码我尝试了此代码(i=0;iYour命令不替换字段分隔符。您的意思可能是:
awk-F”;“'BEGIN{OFS=”“}{$1=$1;print}'
或者
awk-F”;“'BEGIN OFS=”“}{$1=$1;str 0;print str“
我为(i=0;i)尝试了此代码