GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare l'ultimo campo usando 'cut'

Senza awk?...Ma è così semplice con awk:

echo 'maps.google.com' | awk -F. '{print $NF}'

AWK è uno strumento molto più potente da avere in tasca.-F se per field separatorNF è il numero di campi (sta anche per l'indice dell'ultimo)


Potresti provare qualcosa del genere:

echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev

Spiegazione

  • rev inverte "maps.google.com" in moc.elgoog.spam
  • cut usa il punto (cioè '.') come delimitatore e sceglie il primo campo, che è moc
  • infine, lo invertiamo di nuovo per ottenere com

Non è possibile usare solo cut . Ecco un modo per usare grep :

grep -o '[^,]*$'

Sostituisci la virgola per altri delimitatori.

Spiegazione:

  • -o (--only-matching ) emette solo la parte dell'input che corrisponde al modello (l'impostazione predefinita è stampare l'intera riga se contiene una corrispondenza).
  • [^,] è una classe di caratteri che corrisponde a qualsiasi carattere diverso da una virgola.
  • * corrisponde al modello precedente zero o più volte, quindi [^,]* corrisponde a zero o più caratteri diversi dalla virgola.
  • $ corrisponde alla fine della stringa.
  • Mettendo insieme questo, il modello corrisponde a zero o più caratteri non virgola alla fine della stringa.
  • Quando ci sono più possibili corrispondenze, grep preferisce quello che inizia prima. Quindi verrà abbinato l'intero ultimo campo.

Esempio completo:

Se abbiamo un file chiamato data.csv contenente

one,two,three
foo,bar

poi grep -o '[^,]*$' < data.csv produrrà

three
bar

Utilizzare un'espansione dei parametri. Questo è molto più efficiente di qualsiasi tipo di comando esterno, cut (o grep ) incluso.

data=foo,bar,baz,qux
last=${data##*,}

Vedi BashFAQ #100 per un'introduzione alla manipolazione nativa delle stringhe in bash.


Linux
  1. Come controllare i permessi con il comando trova

  2. Come trovo la dimensione massima dello stack?

  3. Come reindirizzare i risultati di "trova" a mv in Linux

  4. Come posso contare il numero di cartelle in un'unità utilizzando Linux?

  5. Come trovare il file manager predefinito?

Come trovare la versione di Redhat Linux installata

Come trovare i file usando la riga di comando nel terminale Linux

Come trovare il numero di porta di un servizio in Linux

Come trovare l'indirizzo IP di una macchina virtuale KVM

Come trovare gli ultimi utenti che hanno effettuato l'accesso in Linux

Come trovare l'ultimo accesso su Linux