awk-Befehlszeile - Zeile entfernen

awk-Befehlszeile - Zeile entfernen

gemäß Wunsch-Postleitzahl gesondert.

aktueller Output

Name,Final Grade,Section
Andrew is an online student
Andrew,95,online
Brandon is an online student
Brandon,100,online
Chelsey is an onsite student
Chelsey,100,onsite
Deborah is an online student
Deborah,72,online
Erik is an online student
Erik,65,online
Arielle is an onsite student
Arielle,88,onsite
Shaun is an onsite student
Shaun,91,onsite
Ninette is an online student
Ninette,82,online
Nguyen is an onsite student
Nguyen,80,onsite

Die Leistung, die ich erreichen soll

Andrew is an online student
Brandon is an online student
Chelsey is an onsite student
Deborah is an online student
Erik is an online student
Arielle is an onsite student
Shaun is an onsite student
Ninette is an online student
Nguyen is an onsite student

im Grunde wird die Zeile aus der Eingabedatei hinzugefügt und der Header nicht entfernt. Mein Problem ist, ihn zu entfernen

  #!/usr/bin/awk -f
    ##comment create awk script that will output the given data in the format given in word document
    ##comment specify the delimiter as ","
    BEGIN { FS = "," }
    
    /./ {
    ##comment check if the third field is online, if print online
    if ($3 == "online")
    printf("%s is an online student\n", $1)
    
    ##commentcheck if the third field is onsite, if print onsite
    if ($3 == "onsite")
    printf("%s is an onsite student\n", $1)
    } $1

Antwort1

In einem Shellskript $1bezieht sich dies auf den ersten Positionsparameter (oder das erste Argument), mit dem das Skript aufgerufen wird. Sie sind es wahrscheinlich gewohnt, damit einen Dateinamen an einenOne-Shot-Throwaway-awk-Programm

Innerhalb einesAusführbares awk-ProgrammKommandozeilenargumente werden jedoch intern über awks eigenes ARGVArray verarbeitet und $1sind das erste Feld des aktuellen Datensatzes. Außerhalb eines Codeblocks ist es gleichbedeutend mit

$1 != "" {
    print
}

wodurch jede Eingabezeile ausgegeben wird, die mindestens ein Nicht- FSZeichen enthält.

Entfernen Sie also das Überflüssige $1.

verwandte Informationen