GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver le dernier champ en utilisant 'cut'

Sans awk ?...Mais c'est tellement simple avec awk :

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

AWK est un outil beaucoup plus puissant à avoir dans votre poche.-F si pour séparateur de champNF est le nombre de champs (représente également l'index du dernier)


Vous pouvez essayer quelque chose comme ceci :

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

Explication

  • rev inverse "maps.google.com" pour être moc.elgoog.spam
  • cut utilise le point (c'est-à-dire '.') comme délimiteur et choisit le premier champ, qui est moc
  • enfin, nous l'inversons à nouveau pour obtenir com

Il n'est pas possible d'utiliser uniquement cut . Voici un moyen d'utiliser grep :

grep -o '[^,]*$'

Remplacez la virgule pour les autres délimiteurs.

Explication :

  • -o (--only-matching ) ne produit que la partie de l'entrée qui correspond au modèle (la valeur par défaut est d'imprimer la ligne entière si elle contient une correspondance).
  • [^,] est une classe de caractères qui correspond à tout caractère autre qu'une virgule.
  • * correspond au modèle précédent zéro fois ou plus, donc [^,]* correspond à zéro ou plusieurs caractères autres que des virgules.
  • $ correspond à la fin de la chaîne.
  • En mettant cela ensemble, le modèle correspond à zéro ou plusieurs caractères autres que des virgules à la fin de la chaîne.
  • Lorsqu'il y a plusieurs correspondances possibles, grep préfère celui qui commence le plus tôt. Ainsi, tout le dernier champ sera mis en correspondance.

Exemple complet :

Si nous avons un fichier appelé data.csv contenant

one,two,three
foo,bar

puis grep -o '[^,]*$' < data.csv sortira

three
bar

Utilisez une extension de paramètre. C'est beaucoup plus efficace que n'importe quel type de commande externe, cut (ou grep ) inclus.

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

Voir BashFAQ #100 pour une introduction à la manipulation de chaîne native dans bash.


Linux
  1. Comment auditer les autorisations avec la commande find

  2. Comment renommer plusieurs fichiers à l'aide de Find ?

  3. Tri sur le dernier champ d'une ligne

  4. Comment puis-je trouver la taille de pile maximale ?

  5. Comment diriger les résultats de 'find' vers mv sous Linux

Comment trouver la version de Redhat Linux installée

Comment trouver des fichiers en utilisant la ligne de commande dans le terminal Linux

Comment trouver le numéro de port d'un service sous Linux

Comment trouver l'adresse IP d'une machine virtuelle KVM

Comment trouver les derniers utilisateurs connectés sous Linux

Comment trouver la dernière connexion sous Linux