Arrays 将字符串追加到awk中的数组元素

Arrays 将字符串追加到awk中的数组元素,arrays,awk,Arrays,Awk,给定以下输入 line1 line2 line3 是否可以将它们全部附加到单个数组元素中,然后作为 line1 line2 line3 用一张打印的报表?半伪代码:awk'{[test]}将$0追加到[test]};END{print a[test]}文件1 两个文件给出了一个更复杂但更实际的示例问题,文件1为: line1 line2 line3 文件2是: linea lineb linec 我将如何生成这样的输出: linea line1 line2 line3 lineb lin

给定以下输入

line1
line2
line3
是否可以将它们全部附加到单个数组元素中,然后作为

line1
line2
line3
用一张打印的报表?半伪代码:
awk'{[test]}将$0追加到[test]};END{print a[test]}文件1

两个文件给出了一个更复杂但更实际的示例问题,文件1为:

line1
line2
line3
文件2是:

linea
lineb
linec
我将如何生成这样的输出:

linea
line1
line2
line3
lineb
line1
line2
line3
linec
line1
line2
line3
我的假设是,这需要一个数组,这是我最初的问题的基础

一些测试,如[test]+=0和[test]=A[test]+$0,都已预料到失败。

如下所示:

$ awk '{
    a[1]=a[1] (a[1]==""?"":ORS) $1  # "append them all into a single array element"
} 
END {
    print a[1]                      # "output them - - with a single print statement"
}' file
line1
line2
line3
至于后一部分:

$ awk '
NR==FNR{
    a[NR]=$1; next
}
{
    b[FNR]=$1
}
END {
    for(i=1;i<=length(a);i++) {
        print a[i]
        for(j=1;j<=length(b);j++)
            print b[j]
    }
}
' file2 file1
linea
line1
line2
line3
lineb
line1
line2
line3
linec
line1
line2
line3
$awk'
NR==FNR{
a[NR]=1美元;下一个
}
{
b[FNR]=1美元
}
结束{
对于(i=1;i,如下所示:

$ awk '{
    a[1]=a[1] (a[1]==""?"":ORS) $1  # "append them all into a single array element"
} 
END {
    print a[1]                      # "output them - - with a single print statement"
}' file
line1
line2
line3
至于后一部分:

$ awk '
NR==FNR{
    a[NR]=$1; next
}
{
    b[FNR]=$1
}
END {
    for(i=1;i<=length(a);i++) {
        print a[i]
        for(j=1;j<=length(b);j++)
            print b[j]
    }
}
' file2 file1
linea
line1
line2
line3
lineb
line1
line2
line3
linec
line1
line2
line3
$awk'
NR==FNR{
a[NR]=1美元;下一个
}
{
b[FNR]=1美元
}
结束{

对于(i=1;i这就是您想要的:

awk 'NR==FNR{a=$0;next}{print;printf "%s", a}'  RS="\0" f1 RS="\n" f2
测试:

kent$head f1 f2

==>f1 f2这就是您想要的:

awk 'NR==FNR{a=$0;next}{print;printf "%s", a}'  RS="\0" f1 RS="\n" f2
测试:

kent$head f1 f2

==>f1 f2是的,可能。请展示一个完整的示例。如果您需要更多扩展,请告诉我。是的,可能。请展示一个完整的示例。如果您需要更多扩展,请告诉我。您的代码非常清楚。但是,您应用了最差的时空复杂度时间:O(m*n),空间:O(m+n)其中一个
a[NR],b[FNR]
hashtable是不必要的,因为awk逐行处理输入。您不必将数据保存在内存中,稍后再循环。您的代码非常清晰。但是,您应用了时间和空间复杂度最差的时间:O(m*n),空间:O(m+n)其中一个
a[NR],b[FNR]
hashtable是不必要的,因为awk逐行处理输入。您不必将数据保存在内存中,稍后再循环使用它们……对那些开始学习awk的人来说,稍加解释甚至漂亮的打印将更有帮助:)…对于那些开始学习awk的人来说,稍加解释甚至漂亮的印刷会更有帮助:)