我在使用 AWK 命令时遇到问题。当我使用这段代码时是:
$ awk '{a[NR]=$1}
END {for (i=0;i<NR;i++)
{B=a[i+1];A=a[i];C=(B-A);D=int(C/16)}
{for (j=0;j<=D;j++)
{if(C!=16) {print t=A;A=A+16;B} else {print A}}
}}' 19.txt
我的输入文件“19.txt”是:
1510
1526
1542
1558
1614
1630
1646
1702
1802
我得到了这个:
1702
1718
1734
1750
1766
1782
1798
我的代码只使用最后几行的差异,为什么?我想补全连续行之间的空格,其中行之间的差异等于16,类似于这样:
1510
1526
1542
1558
----
1574
1590
1606
----
1614
1630
1646
----
1662
1678
1694
----
1702
----
1718
1734
1750
1766
1782
1798
----
1802
答案1
这会产生您正在寻找的输出,并且不必将整个文件存储在内存中。
awk -v diff=16 '
NR>1 && $1-prev > diff {
print "----"
while ($1-prev > diff) {
prev += diff
print prev
}
print "----"
}
{
print
prev = $1
}
' 19.txt
里面有什么不明白的可以问我。