REMARQUE: Cette question est le complément de cette Q&R: Comment "grep" pour la longueur de ligne * pas * dans une plage donnée?
Je dois obtenir uniquement les lignes d'un fichier texte (une liste de mots, séparés par un retour à la ligne) qui a une plage de longueur minimale ou égale à 3 caractères, mais pas plus longue ou égale à 10.
Exemple:
CONTRIBUTION:
egyezményét
megkíván
ki
alma
kevesen
meghatározó
SORTIE:
megkíván
alma
kevesen
Question: Comment puis-je faire cela en bash
?
grep -x '.\{3,10\}'
Réponses:
où
-x
faire correspondre le motif à toute la ligne.
n'importe quel symbole{3,10}
quantifier de 3 à 10 fois le symbole précédent (dans le cas échéant)la source
en utilisant egrep
correspond du début à la fin des lignes pour 3 caractères ou plus mais inférieur ou égal à 10 caractères.
la source
En utilisant
sed
:Ou:
la source
En utilisant
awk
:L'
length
instruction retournerait la longueur de$0
(l'enregistrement / la ligne en cours) par défaut, et ceci est utilisé par le code pour tester si la longueur de la ligne est dans la plage donnée. Si un test comme celui-ci n'a pas de bloc d'action correspondant, l'action par défaut consiste à imprimer l'enregistrement.Test sur les données fournies:
De même avec Perl:
la source