Bash: grep Muster von Befehl Ausgabe
Ich bin wirklich neu mit der bash, aber es ist eines der Themen, die auf der Schule. Eine der übungen war:
Geben Sie die Nummer der Zeile der Datei "/etc/passwd", wo sich die Informationen über Ihren eigenen login.
Angenommen USERNAME
ist meine eigene login-ID, ich war in der Lage, es zu tun perfekt auf diese Weise:
cat /etc/passwd -n | grep USERNAME | cut -f1
Gab, die einfach die Nummer der Zeile erforderlich (kann auch eine mehr optimierte Art und Weise). Ich fragte mich allerdings, wenn es war ein Weg, um den Befehl allgemeiner, so dass es verwendet die Ausgabe von whoami
zur Darstellung der grep Muster, , ohne scripting oder über eine variable. In anderen Worten, halten Sie es ein easy-to-read-one-line-Befehl, etwa so:
cat /etc/passwd -n | grep (whoami) | cut -f1
Sorry, wenn dies ist wirklich eine noob Frage stellen.
InformationsquelleAutor MarioDS | 2012-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rund um einen Befehl in " ist macht es den Befehl ausführen und die Ausgabe in das command-es ist eingewickelt in.
Ohne Verankerung, kann dies zu falschen übereinstimmungen, wenn Sie Ihren login-Namen entspricht, die an anderer Stelle auf der Linie. Früher habe ich einen kurzen login-Namen auf einem lokalen system, das passiert zu match (substring) "System Operator", so einige dumme software dachte, ich war
root
wenn ich nicht.InformationsquelleAutor Lynn Crumbling
Können Sie dies mit einem einzigen
awk
Aufruf:Im detail:
-v
schafft eineawk
variable namensme
und füllt es mit Ihrem Benutzer-Namen.-F
legt die Trennzeichen für Felder:
wie es sich für die Passwort-Datei.$1==me
wählt nur Zeilen, in denen das erste Feld entspricht Ihrem Benutzernamen.print
Ausgänge die Datensatz-Anzahl (line).je früher Sie anfangen zu lernen, desto eher werden Sie in der Lage, um kostenlos exorbitante Preise für Ihre Leistungen 🙂
+1 Für showing off awk, um ein noobie
InformationsquelleAutor paxdiablo
Check-command-substitution in der
bash
man-Seite.Können Sie Sie wieder Zecken
``
oder$()
, und ich persönlich bevorzuge letzteres.Also für deine Frage:
ersetzt die Ausgabe von
whoami
als argument für die-e
Flagge dergrep
- Befehl und die Ausgabe von der ganze Befehl wird Zeile Nummer in/etc/passwd
des ausführenden Benutzers.+1, ich bevorzuge die
$()
Konstrukt als gut, einfach weil es so viel einfacher, um zu brüten.+1 Für den Hinweis auf die beiden syntaxvarianten 🙂
InformationsquelleAutor Chilledrat