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
이 내용을 이해하지 못하는 경우 나에게 물어볼 수 있습니다.