Standard-Unix/Linux-Dienstprogramm zum Testen jeder Eingabezeile

Standard-Unix/Linux-Dienstprogramm zum Testen jeder Eingabezeile

Ich schreibe ein Bash-Skript, das testen soll, ob jede Zeile in der Eingabe bestimmte Bedingungen erfüllt.

Gibt es eine Möglichkeit, das Prädikat zu nehmen und die gesamte Zeile auf 0 oder 1 zu reduzieren, sodass ich den Schleifencode nicht selbst mit einem Dienstprogramm codieren muss, das in Linux-Distributionen standardmäßig enthalten oder leicht verfügbar ist?

Antwort1

Beispieldaten (wir möchten alle Zeilen, die "wollen"):

$ cat x
not this
want this
not that
want that

Sie könnten verwendenawk:

  • Drucken Sie „a“ 1, wenn die Zeile mit dem regulären Ausdruck übereinstimmt/want/
  • Drucken Sie a 0, wenn die Zeile nicht übereinstimmt
$ cat x | awk '{if(match($0,/want/)){print 1}else{print 0}}'
0
1
0
1

Oder Versuchesed:

  • Ersetzen Sie Zeilen die nur enthalten 1durch 0(sonst werden sie als durchgelassen 1)
  • Ersetzen Sie Zeilen, die "wollen" mit einem1
  • Ersetzen Sie Zeilen die nicht 1mit einem sind durch ein0
$ cat x | sed -re 's/^1$/0/' -e 's/^.*want.*$/1/' -e 's/^[^1][^$].*$/0/'
0
1
0
1

verwandte Informationen