GNU/Linux >> Linux Esercitazione >  >> Linux

GNU Grep può produrre un gruppo selezionato?

Puoi usare sed per questo. Su BSD sed :

echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"

Oppure, senza il -E opzione:

sed "s/.*'\([^']\+\)'.*/\1/"

Questo non funziona per l'input su più righe. Per questo hai bisogno di:

sed -n "s/.*'\([^']\+\)'.*/\1/p"

Sebbene grep non possa emettere un gruppo specifico, puoi utilizzare le asserzioni lookahead e behind per ottenere ciò che desideri:

echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"


Puoi usare \K per reimpostare ed eliminare il testo della corrispondenza a sinistra insieme a un lookahead che non viene aggiunto al testo della corrispondenza:

$ echo "foo 'bar'" | grep -oP "'\K[^']+(?=')"
bar

Solo GNU grep.


Linux
  1. Come evidenziare una parola nell'output di "cat"??

  2. Limitare l'uscita di ricerca ed evitare il segnale 13?

  3. Colorare l'output della coda con Sed?

  4. Cattura gruppi con Awk o Grep?

  5. Come eseguire il grep con l'output a colori

grep:cattura di gruppo

Come reindirizzare l'output da grep a cp?

Come posso filtrare i risultati univoci dall'output di grep?

Come posso ordinare ls per proprietario e gruppo?

Come posso ordinare du -h output per dimensione

Come eseguire il grep dell'output di ps con le intestazioni