Die Anzahl von einem spezifischen Wort in einer Zeile anzeigen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von corsa12, 08.01.2008.

  1. #1 corsa12, 08.01.2008
    corsa12

    corsa12 Grünschnabel

    Dabei seit:
    08.01.2008
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo,

    ich habe ein eigentlich simples Problem, wofür ich aber nirgendwo eine Lösung gefunden habe.
    Ich habe eine Datei, wo ich nach einem Ausdruck suchen möchte und die Anzahl pro Zeile ausgeben möchte.
    So nach dem Motto:
    "in der Zeile X kommt das Wort ABC Z mal vor."
    "in der Zeile Y kommt das Wort ABC X mal vor."
    etc.
    grep findet nur die Zeile, aber zeigt mir nicht die Anzahl...

    Weiss jemand einen guten Einzeiler (ohne "in der Zeile...", die Zahl reicht mir) dafür?

    Danke im Vorraus!

    Alex
     
  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 bytepool, 08.01.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    hi,

    ich wuerde mir wahrscheinlich mit grep die Zeile ausgeben lassen, mit sed alles bis auf die gesuchten Woerter filtern, und dann mit wc die woerter zaehlen. Geht aber sicher auch anders.

    mfg,
    bytepool
     
  4. #3 Wolfgang, 08.01.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Schnellschuß mit perl:

    Code:
    $ echo "abc abc abc bef"|perl -nle 'print (s/(abc)/$1/g)'
    3
    
     
  5. #4 bytepool, 08.01.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    hi,

    ich merke gerade, dass es doch nicht ganz so einfach ist wie ich dachte, da die Bash bei command substitution ja die letzten \n's immer abschneidet. Damit funktioniert ein simples
    Code:
    for line in $(grep $word $datei)
    
    wie es mir vorschwebte schonmal nicht. Das waere dann ja nur noch eine Zeile, da koennte man auch gleich ein "grep -o $word $datei | wc -w" machen...
    Ich muss mich also revidieren, ich wuerde es wahrscheinlich direkt komplett in Perl machen, finde ich einfacher ;)
    Ausser obskuren Umwegen wie mit sed einen extra delimiter (z.B. <eol>) an jedes Zeilen Ende anzufuegen (sed 's/$/<eol>/') und die Zeilen dann Stueck fuer Stueck zu extrahieren und abzuarbeiten wuerde mir dazu auch nichts einfallen. Aber geht das nicht auch irgendwie einfacher mit Shellmitteln?

    mfg,
    bytepool
     
  6. #5 Wolfgang, 08.01.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Naja mit GNU grep geht auch das
    Code:
    $ cat datei
    abc cda ab cda abc
    cda bdf foo bar
    efg hij abc cba bc
    
    
    $ while read line; do echo $line|grep -o 'abc'|wc -l; done < datei
    2
    0
    1
    
    
    Die null kann man noch rausfiltern
    Die Shell selbst ist aber nicht so stark in Textverarbeitung, deshalb gibt es schon lange solche tools wie ed sed awk und perl.

    Gruß Wolfgang
     
  7. #6 corsa12, 08.01.2008
    corsa12

    corsa12 Grünschnabel

    Dabei seit:
    08.01.2008
    Beiträge:
    3
    Zustimmungen:
    0
    bei mir (Solaris Unix) ist die Option -o leider nicht verfügbar!!! :(
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 Wolfgang, 08.01.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Ist das denn so schwer Das hier zu beachten?
    :rtfm:

    Was spricht gegen die Perllösung?
     
  10. #8 corsa12, 08.01.2008
    corsa12

    corsa12 Grünschnabel

    Dabei seit:
    08.01.2008
    Beiträge:
    3
    Zustimmungen:
    0
    nichts! ich habe auch nichts gegen diese lösung gesagt.
    ich dachte nur es gibt vielleicht eine simple lösung auf die ich nicht gekommen war.
     
Thema:

Die Anzahl von einem spezifischen Wort in einer Zeile anzeigen

Die Seite wird geladen...

Die Anzahl von einem spezifischen Wort in einer Zeile anzeigen - Ähnliche Themen

  1. Steam: Anzahl an Linux-Spielen vervierfacht sich

    Steam: Anzahl an Linux-Spielen vervierfacht sich: Seit der Veröffentlichung von Steam für Linux vor einem Jahr hat sich die Zahl der Titel für Linux vervierfacht. Auch die Qualität der Titel...
  2. Anzahl Blöcke Unix-Dateisystem berechnen

    Anzahl Blöcke Unix-Dateisystem berechnen: Hi, Ich möchte folgende Aufgabe berechnen: Die Blockgröße eines Unix-Dateisystems beträgt 4 kiByte. Die indirekten Blöcke enthalten 1024...
  3. Anzahl Dateein in xbeliebigen Verzeichnissen ermitteln

    Anzahl Dateein in xbeliebigen Verzeichnissen ermitteln: Hallo ixh habs mal in diese Rubrik gesetzt, da ich nciht weiß, ob das nur per script geht, oder nicht. Wie kann ich die Anzahl der Dateien...
  4. Anzahl Elemente in Array hochzählen

    Anzahl Elemente in Array hochzählen: Hallo zusammen, nach etwa 20 Stunden unermüdlichen Probierens, komme ich jetzt doch nicht am Nachfragen vorbei :-( Ich möchte ein Array von...
  5. Anzahl der belegten Speicherbänke in der Konsole anzeigen

    Anzahl der belegten Speicherbänke in der Konsole anzeigen: Moin, gibt es eine Möglichkeit über die Konsole herauszufinden, wie viele RAM Module in meinem System verbaut sind? mfg thobit