2016-06-25 11 views
2

Ich brauche Echo mit Grep in einem Shell-Skript. Kann ich es benutzen?Wie Echo mit Grep in einem Unix-Shell-Skript verwenden?

Ich versuchte dies, ist aber falsch:

echo Linux: grep "Linux" ~/workspace/ep-exercicios/m1/e2/intro-linux.html | wc -w 

zeige ich brauche die Meldung:

Linux: (number of Linux word on the document). 

Beispiel:

Linux: 945 

Antwort

3

grep -o | wc -l Logik von anderen Antworten sollte heute auf den meisten Systemen funktionieren.

Hier ist ein weiterer Mechanismus mit awk.

awk 'END{print RS " : " NR-1}' RS=Linux ~/workspace/ep-exercicios/m1/e2/intro-linux.html 

Logic: die Datei in Datensätze aufteilen, mit Record Separator = "Linux". Am Ende drucken Sie die Datensatznummer.


z.B. für Datei dieser Inhalte enthält:

Die Linux ist ein Unix-artiges und meist POSIX-kompatibeles Computer-Betrieb System (OS) montiert unter dem Modell der freien und Open-Source-Software Entwicklung und Vertrieb. Die definierende Komponente von Linux ist der Linuxkernel , ein Betriebssystemkernel, der am 5. Oktober 1991 von Linus Torvalds, , veröffentlicht wurde. Die Free Software Foundation verwendet den Namen GNU/Linux das Betriebssystem zu beschreiben, die

zu einem gewissen Kontroverse geführt hat

Aufzeichnungen werden:

  1. Die
  2. ist ein Unix-artige und meist POSIX-konformes Computerbetriebssystem (OS), das nach dem Modell der freien und quelloffenen Softwareentwicklung und -verteilung zusammengestellt wurde. Die definierende Komponente von
  3. ist der
  4. Kernel, ein Betriebssystemkernel, der am 5. Oktober 1991 von Linus Torvalds veröffentlicht wurde.Die Free Software Foundation verwendet den Namen GNU/
  5. das Betriebssystem zu beschreiben, die

Vorkommen Zahl von Linux zu einigen Kontroversen geführt hat, ist 4 == letzte Rekordzahl - 1.

+0

Ich wiederhole den Punkt, den Sie am Anfang gemacht haben: 'rep -o | wc-l Logik von anderen Antworten sollte auf den meisten Systemen heute funktionieren & plus1 für Ihre Logik – sjsam

+0

yup ... die meisten (nicht alle) & heute waren wichtige Wörter in diesem: D – anishsane

+0

Das ist richtig, danke @anishsane –

3

Verwenden grep mit -o Option:

printf "%s: %s\n" "Linux : " "$(grep -o "Linux" ~/workspace/ep-exercicios/m1/e2/intro-linux.html | wc -w)" 

sollte es tun

grep manpage sagt:

-o, --only Anpassungs
drucken nur die angepassten (nicht leer) Teile einer Anpassungsleitung, mit jeder solcher Teil auf einer separaten Ausgangsleitung.

+1

OK, vielen Dank! –

+4

Es wäre eine Erklärung wert, warum Sie die Option "-o" verwendet haben, und es ist auch erwähnenswert, dass es sich um eine GNU 'grep'-Erweiterung handelt, die nicht für alle Varianten von Unix verfügbar ist. –

+0

@ JonathanLeffler: Danke. Ich hatte den Eindruck, dass grep für GNU Regular Expressions Print steht. Augenöffner in der Tat! –

0

Sie einfach kann es erreichen, indem ich unten geringfügige Änderung mache.

echo "Linux:` grep "Linux" ~/Arbeitsbereich/ep-exercicios/m1/e2/intro-linux.html | wc -w`"