AWK - Datei und Länge in zwei Zeilen in END drucken

AWK - Datei und Länge in zwei Zeilen in END drucken

Ich muss ein Skript in AWK erstellen, das das längere Feld in der Zeile auswählt und es anschließend am Ende in zwei Zeilen und darunter (in der zweiten Zeile) anzeigt.

Ich habe das gemacht:

NF>0 || $0=="^[[:space:]]{1,}$"{
        tab[FNR]=$1
        len[FNR]=length($1)
        i=2
        while (i<=NF)
        {
                len2=length($i)
                if(len2>len[FNR])
                {
                        tab[FNR]=$i
                        len[FNR]=len2
                }
                i=i+1
        }
        print tab[FNR]

}
END{
        for(x in tab)
        {
                printf("%s ",tab[x])
        }
        for (y in len)
        {
                printf("%d ", len[y])
        }
}

Aber Ergebnisse: (..) Nicht-ASCII

Informative Meta-Syntax Transport Fields", Structured Identification 2919, Showalter, Language", "Internationalized Applications August Bernstein, <http://cr.yp.to/proto/verp.txt>. Addresses Levine Taughannock Box Trumansburg, US Phone: [email protected] http://jl.ly Randall Incorporated Morehouse Diego, US [email protected] Informational 
                                                                                 11 11 10 13 9 9 8 14 12 9 11 14 6 14 13 11 10 11 11 9 9 11 8 39 9 10 9 8 10 38 11 12 10 10 10 10 13 1 9 8 12 13 9 9 8 8 6 7 8 11 12 14 10 10 11 12 14 12 10 13 17 9 10 13 11 10 8 13 11 13 9 9 14 10 9 9 8 13 12 10 10 13 1 9 13 12 11 10 13 7 12 8 13 16 7 10 8 9 13 12 7 9 9 11 14 11 14 13 11 12 15 9 7 12 9 10 7 11 8 10 11 13 8 14 13 13 1 9 9 8 12 13 20 13 13 11 13 11 9 9 11 10 11 13 9 12 13 11 12 11 13 13 10 12 8 11 8 13 9 10 8 10 12 10 12 13 1 9 8 8 12 16 9 10 11 11 9 12 9 10 11 10 7 10 11 8 8 10 8 9 9 6 9 8 9 11 8 9 10 8 9 9 8 8 9 10 12 10 9 11 13 1 9 7 13 11 8 9 11 10 8 8 25 10 38 17 45 15 43 10 25 11 28 13 49 10 13 10 10 7 7 9 8 10 10 17 10 12 10 12 10 13 1 9 9 8 10 8 10 15 12 7 9 14 8 13 17 9 10 9 8 11 10 9 9 10 15 10 10 10 11 10 11 9 9 10 10 9 10 12 8 11 14 11 9 9 13 1 9 8 10 11 10 10 5 12 11 10 10 10 9 10 10 12 11 9 10 7 10 14 7 10 10 12 10 7 9 8 10 8 9 17 13 1 9 11 11 9 8 10 14 5 10 10 18 12 6 10 33 9 6 11 3 12 2 6 19 12 7 12 9 6 2 24 13 1 

Es wurde einfach so gedruckt, wie ich es geschrieben habe – zuerst alle Wörter und danach die Länge, aber ich weiß nicht, wie ich es richtig machen kann. Können Sie mir sagen, wie ich Wörter und direkt darunter ihre Länge drucken kann?

Antwort1

Wenn ich Ihre Frage richtig verstehe, müssen Sie etwas wie Folgendes verwenden:

    for (y in len)
    {
            printf("%" len[y] "d ", len[y])
    }

verwandte Informationen