Bonjour, dansle livre les expressions régulieres chez ENI il parle de wc pour compter les lignes !
#!/bin/bash if [ $# -ne 1 ]; then echo "Usage: $0 <nom_du_fichier>" exit 1 fi if [ ! -f "$1" ]; then echo "Fichier introuvable." exit 1 fi tac "$1" | nl -ba Fait par Chatgpt ¡ je suis interessé de voir une version avec wc ? null Le dim. 2 mars 2025 à 13:28, philippe L <[email protected]> a écrit : > Slt, > > Ah, inverser le comptage des lignes dans Vim ou Emacs! Voici comment vous > pouvez le faire: **Pour Vim:** 1. Ouvrez le fichier dans Vim. 2. Tapez > `:set nu` pour activer l'affichage des numéros de ligne. 3. Si vous > souhaitez inverser l'ordre de comptage, vous devrez probablement créer une > fonction personnalisée dans VimScript car Vim n'a pas de fonctionnalité > intégrée pour cela. **Pour Emacs:** 1. Ouvrez le fichier dans Emacs. 2. > Activez l'affichage des numéros de ligne en tapant `M-x linum-mode`. 3. > Vous pouvez utiliser le package `nlinum` pour une meilleure gestion des > numéros de ligne. Malheureusement, Emacs non plus ne prend pas en charge > l'inversion de l'ordre de comptage des lignes directement. Vous devrez > probablement créer une fonction personnalisée en Emacs Lisp. Si vous avez > des questions spécifiques sur la création de ces fonctions personnalisées, > n'hésitez pas à demander. C'est un défi intéressant! > > > null > > > Le sam. 1 mars 2025 à 23:42, Marc Chantreux <[email protected]> a écrit : > >> salut, >> >> On Sat, Mar 01, 2025 at 09:02:20PM +0100, Bernard Schoenacker wrote: >> > Bonjour, >> > Merci beaucoup pour la réponse, attention c'est juste un exemple dans >> une liste >> > <terme de matière> " espace " <Qtité numérique> " espace" <unité g >> pour grammes> >> >> dans ton premier mail, le séparateur n'est pas un espace mais une >> tabulation. si c'est le cas tout le temps alors le problème est simple: >> >> <<% hd >> Butter 500g >> >> Ici c'est bien une tabulation >> v >> 00000000 42 75 74 74 65 72 09 35 30 30 67 0a |Butter.500g.| >> 0000000c >> >> du coup: >> >> <<% awk -F'\t' -vOFS='\t' '{t=$1;$1=$2;$2=t}1' >> Butter 500g >> Amour pour le format TSV ∞ >> >> ou une version plus verbeuse >> >> awk ' >> BEGIN { FS = OFS = "\t" } >> { >> temp = $1 >> $1 = $2 >> $2 = temp >> } >> 1 # toujours vrai donc fait toujours l'action par défaut ({print}) >> ' >> >> ou en perl si tu as de gros volumes (ce qui ne sera pas le cas pour une >> recette): >> >> <<% perl -plF'\t' -E '$_=join "\t", reverse @F' >> Butter 500g >> Amour pour le format TSV ∞ >> >> >> > Merci beaucoup pour la réponse, attention c'est juste un exemple dans >> une liste >> > <terme de matière> " espace " <Qtité numérique> " espace" <unité g >> pour grammes> >> >> si tu dis vrai (on ne peut pa compter sur \t), faut prévoir les cas >> pourris du genre >> >> >> doliprane 1G 1 barquette >> huile d'olive ½ louche >> >> ma stratégie serait donc >> >> <produit> <ws>* <quantité> <ws>* <unité> >> >> et donc considérer que <quantité est la dernière valeur numérique de la >> ligne. >> >> >> <<% perl -plE '/(.*) *(\d+|[½¾]) *(.*)/; $_="$2 $3\t$1"' >> doliprane 1G 1 barquette >> huile d'olive ½ louche >> >> <<% sed -E 's/(.*) *([0-9]+|[½¾]) *(.*)/\2 \3\t\1/' >> doliprane 1G 1 barquette >> huile d'olive ½ louche >> >> bonne soirée >> >> >> -- >> Marc Chantreux >> Pôle CESAR (Calcul et services avancés à la recherche) >> Université de Strasbourg >> 14 rue René Descartes, >> BP 80010, 67084 STRASBOURG CEDEX >> 03.68.85.60.79 >> >>

