Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    grep per mostrare solo il pattern trovato

    Salve a tutti,
    vorrei sapere come si usa il comando grep per ottenere, dato un pattern, solo i caratteri della riga individuata che rispettano il pattern, senza che mi vengano mostrati i restanti caratteri della riga.

    In particolare ho un file composto da righe di questo tipo

    5412534 (un nome) altre informazioni che non mi interessano

    io vorrei recuperare colo il numero ed il nome tra parentesi


  2. #2
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    Ti faccio un esempio pratico di un filtro di testo che diventa sempre più selettivo. Ti basterà fare qualcosa di simile all'ultimo esempio, definendo correttamente l'espressione regolare da ricercare, per ottenere i risultati desiderati.
    codice:
    [cacao74@server cacao74]$ grep 80 /etc/services
    http            80/tcp          www www-http    # WorldWideWeb HTTP
    http            80/udp          www www-http    # HyperText Transfer Protocol
    socks           1080/tcp                        # socks proxy server
    socks           1080/udp                        # socks proxy server
    corbaloc        2809/tcp                        # CORBA naming service locator
    amanda          10080/tcp                       # amanda backup services
    amanda          10080/udp                       # amanda backup services
    omirr           808/tcp         omirrd          # online mirror
    omirr           808/udp         omirrd          # online mirror
    canna           5680/tcp
    http-alt        8008/tcp
    http-alt        8008/udp
    webcache        8080/tcp                        # WWW caching service
    webcache        8080/udp                        # WWW caching service
    tproxy          8081/tcp                        # Transparent Proxy
    tproxy          8081/udp                        # Transparent Proxy
    [cacao74@server cacao74]$ grep -w 80 /etc/services
    http            80/tcp          www www-http    # WorldWideWeb HTTP
    http            80/udp          www www-http    # HyperText Transfer Protocol
    [cacao74@server cacao74]$ pattern="80"; \
        grep -w $pattern /etc/services | \
        sed -ne "s/^.*\($pattern\).*$/\1/p"
    80
    80
    Oppure, se la struttura è fissa, conviene usare awk:
    codice:
    [cacao74@server cacao74]$ awk ' { print $1 "\t" $2 } ' /etc/services
    ...
    tfido   60177/tcp
    tfido   60177/udp
    fido    60179/tcp
    fido    60179/udp
    ciao
    slack? smack!

  3. #3

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.