[ awk-Tutorium ]

 

Anhang B

Lösungen


1a    

    { print $2, $1 }
print kan mehrere Argumente haben, die mit Kommas getrennt werden. Bei der Ausgabe wird zwischen den Argumenten ein Leerzeichen geschrieben.


1b    

    { print NR, $0 }


2a    Es gibt zwei Möglichkeiten:

    NR%2==0

für Zeilen mit geraden Nummern,

    NR%2==1

für ungerade.


2b    

    {l++; w += NF; c += length + 1};
    END {print l, w, c};
Die 1 muss zur Länge addiert werden, da wc das Zeichen \n am Ende der Zeile mitberücksichtigt.


2c    

    $1=="mult" { n += $2*$3 }; END { print n }


2d    

    /^[ \t]/ { print ""; print }


2e    

    $1 != x { print; x = $1 }


3a    

    { printf "%-8s%8d%8.2f%8.2f%8.2f", $1, $2, $3, $4, $5 }


3b    

    {
        x1 = substr ($0,1,8);
        x2 = substr ($0,9,8);
        x3 = substr ($0,17,8);
        x4 = substr ($0,25,8);
        x5 = substr ($0,33,8);
        print x1, x2, x3, x4, x5;
    }


3c    

    $0 ~ "^[0-9]" {
        gsub("ä","Ä");
        gsub("ö","Ö");
        gsub("ü","Ü");
        gsub("ß","SS");
        print toupper ($0);
    }

    $0 !~ "^[0-9]"


4a    Alle Wörter in umgekehrter Reihenfolge:

    { for (i=NF;i>0;i--) printf "%s " $i; print "" }

Die Zeile verkehrtherum:

    {
        for (i=length;i>0;i--)
            printf "%s" substring ($0,i,1);
        print "";
    }

Das abschließende print "" bewirkt nur einen Zeilenumbruch.


4b    

    BEGIN {
        while (getline < "id.dat" == 1) a[$1] = 0
    }


4c    

    { if ($1=="SOLID") getline; else print; }
Auch wenn es nicht so aussieht, werden hier tatsächlich zwei Zeilen nicht geschrieben: getline liest die nächste Zeile ein, mit der aber nichts gemacht wird. Erst die übernächste Zeile wird wieder auf »SOLID« überprüft. Eine alternative Lösung wäre:

    /^SOLID/ { getline; next; }
    { print; }


5a    

    { gsub (/\<[^>]*\>/,""); print }


Nächstes Kapitel
Voriges Kapitel
nach oben
Inhalt


________
Startseite --> Dies & das --> awk-Tutorium --> Anhang B
Übersicht
Martin Oehm

[ www.martin-oehm.de - Startseite ]
[ Dies & das ]
[ awk-Tutorium ]

Inhalt

Vorwort

1. Kapitel
2. Kapitel
3. Kapitel
4. Kapitel
5. Kapitel

Kurzübersicht
Lösungen