awk Variable als regulären Ausdruck brauchen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von dsx12, 17.01.2011.

  1. dsx12

    dsx12 Jungspund

    Dabei seit:
    06.01.2011
    Beiträge:
    21
    Zustimmungen:
    0
    Ich will in awk eine Variable als regulären Ausdruck brauchen. Das hat eigentlich soweit auch geklappt, nur wenn ich einen String mit einem Leerzeichen habe geht es nicht. Ich will in /etc/passwd nach ganzen Namen suchen und den dazugehörenden Benutzernamen ausgeben.
    Code:
    #!/bin/sh
    echo Please enter your name:
    read name
    awk 'BEGIN{
    FS=":"
    }
    $5 ~ /'$name'/{print $1}' /etc/passwd
    Ich erhalte folgenden Fehler bei der Suche nach einem ganzen Namen.
    Code:
    Please enter your name:
    Vorname Nachname
    awk: Kommandozeile:3: $5 ~ /Vorname
    awk: Kommandozeile:3:       ^ Nicht-beendeter Regulärer Ausdruck
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 floyd62, 17.01.2011
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    ... sollte eigentlich ganz einfach durch Double-Quotes um "$name" zu lösen sein; wenn du dann noch den FS über die Option '-F' auf der Kommandozeile setzt, lässt sich der ganze awk zum Einzeiler zusammenfassen:
    Code:
    awk -F: '$5 ~ /'"$name"'/{print $1}' /etc/passwd
    
    Gruss, A.
     
  4. dsx12

    dsx12 Jungspund

    Dabei seit:
    06.01.2011
    Beiträge:
    21
    Zustimmungen:
    0
    Danke hat bestens funktioniert.
    Was ist eigentlich der Unterschied von doppelten(") zu einfachen(') Quotes in Shell-Scripts?
     
  5. #4 floyd62, 20.01.2011
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Im Wesentlichen werden Variablen innerhalb von double quotes ausgewertet, innerhalb von single quotes nicht. Details gibt's in den Manuals oder z.B. auch im Advanced Bash-Scripting Guide.

    Gruss, A.
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

awk Variable als regulären Ausdruck brauchen

Die Seite wird geladen...

awk Variable als regulären Ausdruck brauchen - Ähnliche Themen

  1. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  2. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  3. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  4. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  5. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...