Ich benutze Bash-Skript zu Testzwecken. Während meiner Tests muss ich die Zeilennummer des ersten Auftretens eines Strings in einer Datei finden. Ich habe "awk" und "grep" beide versucht, aber keiner von ihnen gibt den Wert zurück.
Awk Beispiel
%Vor%Dies erweitert $ VAR nicht. Wenn ich den Wert von VAR verwende, funktioniert es, aber ich möchte VAR
verwendenGrep Beispiel
%Vor%Dies ergibt die Fehlerzeile 20: -n: Befehl nicht gefunden
grep wechselt
-n = Zeilennummer einfügen
-m 1 = Übereinstimmung mit einem
sed-Optionen (Stream-Editor):
's/X/Y/'
- Ersetzen Sie X durch Y
\([0-9]*\)
- Regulärer Ausdruck zum Übereinstimmen mit Ziffern null oder mehrere Male aufgetreten, Escape-Klammern, der String, der mit Regex in Klammern übereinstimmt, ist das \ 1-Argument in Y (Ersetzungszeichenfolge)
\([0-9]*\).*
- .*
passt jedes Zeichen an, das null oder mehrere Male auftritt.
Versuchen Sie etwas wie:
%Vor% In awk
, / /
interpretiert awk
Variable wörtlich. Sie müssen den Operator match
( ~
) verwenden. Was wir hier machen, sucht nach der Variablen in Ihrer Eingabezeile. Wenn es übereinstimmt, drucken wir die in NR
gespeicherte Zeilennummer und beenden es.
-v
können Sie eine awk
Variable ( search
) im obigen Beispiel erstellen. Dann weisen Sie ihm Ihre bash
Variable zu ( $var
).