Anzeige:
Ergebnis 1 bis 7 von 7

Thema: grep - aus einer Ergebniszeile nur den Suchbegriff ausschneiden

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    146

    grep - aus einer Ergebniszeile nur den Suchbegriff ausschneiden

    Hallo
    ich würde gerne im Terminal (bash, Ubuntu 22.04) mit grep und curl aus der Rückgabe der phpinfo() nur die PHP Version raus schneiden.
    Also mit:
    Code:
    curl localhost/phpinfo.php | grep "PHP Version"
    kriege ich ja sogar zwei Zeilen mit viel Drumherum (sogar ein serialisiertes Icon) als Ausgabe, obwohl ich ja nur nach "PHP Version" gesucht hatte.
    Ich will aber nur den Text "8.2.3" (nur ein Beispiel) in der Ausgabe haben, um es weiter zu verwenden.
    Gibt es da Tricks? Wie macht man das?
    Danke für Tipps.
    franc

  2. #2
    kleine schwester von root Avatar von corresponder
    Registriert seit
    May 2002
    Ort
    192.67.198.56
    Beiträge
    4.584
    wäre nicht auch ein
    php -v |grep PHP
    möglich?
    _______________________________________

    www.audio4linux.de - musik machen mit offenen quellen!

  3. #3
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    146
    php -v liefert die CLI Version, aber nicht die grad im Apache läuft.

  4. #4
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.315
    Code:
    curl... |grep "PHP Version"|cut -d">" -f5|cut -d"<" -f1
    Sowas in der Richtung sollte gehen. Ich würde es aber direkt über PHP lösen:

    Code:
    <?php
    echo phpversion();
    ?>

  5. #5
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.253
    Code:
    curl URL.php | grep -Eo "PHP................"
    die punkte sind die anzahl von Zeichen die nach dem Suchbegriff kommen
    Beispiel

    Code:
    echo "vui3erh PHP u3rg 3gr 3gr" | grep -Eo "PHP......"
    PHP u3rg
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  6. #6
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    146
    Zitat Zitat von DrunkenFreak Beitrag anzeigen
    Code:
    curl... |grep "PHP Version"|cut -d">" -f5|cut -d"<" -f1
    ...
    Vielen DANK!
    cut musste ich also nehmen
    Klappt!
    Also mit:
    Code:
    #curl -s localhost/phpinfo.php | grep "PHP Version <" | cut -d">" -f5 | cut -d"<" -f1
    7.4.33
    Zur Erklärung (für mich, in ein zwei Monaten hab ich das nämlich längst vergessen):
    Code:
    #curl -s localhost/phpinfo.php | grep "PHP Version <"
    <tr><td class="e">PHP Version </td><td class="v">7.4.33 </td></tr>
    #curl -s localhost/phpinfo.php | grep "PHP Version <" | cut -d">" -f1cut -d">" -f1 
    <tr
    #curl -s localhost/phpinfo.php | grep "PHP Version <" | cut -d">" -f2
    <td class="e"
    #curl -s localhost/phpinfo.php | grep "PHP Version <" | cut -d">" -f5 
    7.4.33 </td
    #curl -s localhost/phpinfo.php | grep "PHP Version <" | cut -d">" -f5 | cut -d"<" -f1
    7.4.33
    cut schneidet mit -d vom Delimiter (">") die 5. Sequenz (-f5) bis zum nächsten Delimiter raus, dann noch mal an cut um mit einem neuen Delimiter ("<") das Gewünschte (Versionsnummer) auch noch vom Rest raus zu schneiden, nämlich mit -f1 nur die erste Sequenz bis < nehmen.

    Mit PHP bringt es mir im Terminal ja nichts, dort brauch ich das ja. Und der php Befehl im Terminal ruft dann auch das CLI PHP auf, das ist eine andere Version als das aktive Apache PHP-Modul, dessen Version ich wissen will.

    Zitat Zitat von Huhn Hur Tu Beitrag anzeigen
    Code:
    curl URL.php | grep -Eo "PHP................"
    die punkte sind die anzahl von Zeichen die nach dem Suchbegriff kommen
    Beispiel

    Code:
    echo "vui3erh PHP u3rg 3gr 3gr" | grep -Eo "PHP......"
    PHP u3rg
    Auch interessant, danke!
    Den -o Parameter hatte ich noch nie verwendet, nützlich auch!

    In meiner bashrc habe ich jetzt drin (für einen Alias "phpv" der mir die PHP Version im Apache ausgeben soll):
    Code:
    ...
        CURL='/usr/bin/curl'
        GREP='/usr/bin/grep'
        CUT='/usr/bin/cut'
        URL='localhost/phpinfo.php'
        PHPVERSION="$($CURL -s $URL | $GREP 'PHP Version <' | $CUT -d'>' -f5 | $CUT -d'<' -f1)"
        echo "
          Aktuelle PHP-Version im Apache: $PHPVERSION
    "
    ...
    Geändert von franc (16.03.23 um 15:14 Uhr)

  7. #7
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.253
    Vorsicht bei cut, das Funktioniert nur, wenn der delimiter sauber gesetzt ist. ist ein Tab oder zwei Spaces zwischen drin matched das nicht mehr, daher verwende ich bei unklaren delimitern gerne awk '{print $5}', was als Feldtrenner per default "irgendwelche" Whitespaces verwendet
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


Ähnliche Themen

  1. [Umfrage] Welchen Suchbegriff?
    Von LinuxISOs.de im Forum Meldungen und Mitglieder
    Antworten: 9
    Letzter Beitrag: 12.09.05, 20:45
  2. Ausschneiden mit rox!
    Von Sabutay im Forum Anwendungen Allgemein, Software
    Antworten: 4
    Letzter Beitrag: 28.03.05, 13:02
  3. Mit grep nach -h in einer manpage suchen?
    Von ciedan im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 10.08.04, 19:30
  4. ps und grep: warum findet grep sich selbst nicht immer?
    Von variant im Forum Linux Allgemein
    Antworten: 6
    Letzter Beitrag: 24.03.04, 21:32
  5. Antworten: 9
    Letzter Beitrag: 16.03.04, 17:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •