2010-04-10 2 views
2

J'ai besoin d'imprimer les 20 derniers caractères de la chaîne, mais seulement des mots entiers. Le délimiteur est un espace "". Considérons cet exemple:Linux queue seulement des mots entiers

string = "Le renard brun rapide saute par-dessus le chien paresseux"
echo $ string | queue C20

rendements s over the lazy dog. Et j'en ai besoin pour retourner over the lazy dog à la place. Savez-vous comment accomplir cela? Merci!

Répondre

3
echo $string | perl -ne 'print "$1\n" if /\b(\S.{0,20})$/' 
+0

Très bien, merci. – Gargauth

+2

Utilisation de grep: echo $ string | egrep -o '\ <. {0,20} $' –

+0

@UdiM: Vous devriez en faire une réponse. –

2
echo $string | rev | cut -d ' ' -f -20 
+0

Cela génère les * premiers * vingt * mots *. –

+0

lol ... bien repéré, l'a changé avec rev, mais il ne fonctionnera toujours pas sur des lignes muptiples ... va chercher ... – Stefan

1

Cela fonctionne dans Bash> 3.2 sans utiliser de programmes externes:

[[ $string =~ \ (.{0,20})$ ]] 
result="$BASH_REMATCH[1]" 

J'utilisé de UDim grep version de base.

Questions connexes