commande Terminal à une position connue [RÉSOLU], travailler dans des fichiers .txt |
Bienvenue invité ( Connexion | Inscription )
commande Terminal à une position connue [RÉSOLU], travailler dans des fichiers .txt |
31 Mar 2022, 20:39
Message
#31
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 3 026 Inscrit : 2 May 2007 Lieu : Région Parisienne (91) Membre no 85 838 |
J'ai de nouvelles info, je dois conserver les références en fin de ligne et ne plus les supprimer. Je te demandais en dernier - supprimer la fin de ligne à partir de la position 163 Peux-tu STP me refaire cette ligne en annulant cette suppression et en ajoutant deux * en plus de ceux qui s'ajoutaient avant Ça marche ! Voila une version modifiée (suivi de l'exemple dans la foulée) : Code % cat script.sh (Nota : Seule la ligne du sed est différente. Tu n'as pas à modifier le reste.)#!/bin/zsh filename=$1 sed -E 's/(^.{80}).(.{4})(.{2})(.{2})(.{5})(.{30})(.{30})(.*)$/\1\2.\3.\4*\5*\6*\7*\8/' $filename | sed -E 's/(^.{163})(.{2})(.{2})(.*)$/\1.\2.\3**\4/' exit % cat file1 NOMxxxxx*prénom/ 21999092075000PARIS FRANCE 20201111991324505 sqkdfhlqsqosduhfdvsvs 31967123077230JSDJSD SFBSDFBF 20130413991324505 opisbvqkbvksqbv/ 62001042391034ERJEN ZIGNBN 20011115991324505 oiqosuqohbsvbsd/ 11974030205431EZDDFV UZETKISFHG 20070304991324505 oiqosÇqoÊhbÆsvbsd/ 11974030205431EZDDFV UZETKISFHG 20070304991324505 newöÓÉÅîìÄà∂‡‰ˆ‚x/ 11974030205431EZDDFV UZETKISFHG 20070304991324505 % ./script.sh file1 > file2 % cat file2 NOMxxxxx*prénom/ 1999.09.20*75000*PARIS *FRANCE *2020.11.11**991324505 sqkdfhlqsqosduhfdvsvs 1967.12.30*77230*JSDJSD *SFBSDFBF *2013.04.13**991324505 opisbvqkbvksqbv/ 2001.04.23*91034*ERJEN *ZIGNBN *2001.11.15**991324505 oiqosuqohbsvbsd/ 1974.03.02*05431*EZDDFV *UZETKISFHG *2007.03.04**991324505 oiqosÇqoÊhbÆsvbsd/ 1974.03.02*05431*EZDDFV *UZETKISFHG *2007.03.04**991324505 newöÓÉÅîìÄà∂‡‰ˆ‚x/ 1974.03.02*05431*EZDDFV *UZETKISFHG *2007.03.04**991324505 NB Je passe un de ces temps à faire ces messages, c'est carrément de la mise en page pour que ce soit clair, car si on met tout en texte brut… Oui, c'est un peu long. Mais ça rends la lecture plus agréable et simple ! C'est important.-------------------- Whoever fights monsters should see to it that in the process he does not become a monster; -------------------------------------------------------------------------------------------------------------------------------And when you look long into an abyss, the abyss also looks into you. - Friedrich Nietzsche -(issue de la préface de la novélisation "The Abyss" d'Orson Scott Card depuis le film eponyme) [refurb] MacBook Pro 13"(early2019) , QuadCore 2.7GHz, 16Go de RAM, 512Go, sous OSX 10.14 Mojave [refurb] MacMini Core2Duo 2.0GHz (early 2009), 1Go de RAM, DD 120Go 5400rpm, sous OSX 10.6.3 Snow Lepard + Mighty Mouse BT + Clavier BT "Alu" |
|
|
31 Mar 2022, 21:25
Message
#32
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 732 Inscrit : 18 Nov 2004 Lieu : Suisse Membre no 27 214 |
Ça marche ! 😳 houaaaaaa la puissante et la rapidité du Terminal pour faire ceci… c'est impressionnant Voila une version modifiée NB Je passe un de ces temps à faire ces messages, c'est carrément de la mise en page pour que ce soit clair, car si on met tout en texte brut… Oui, c'est un peu long. Mais ça rends la lecture plus agréable et simple ! C'est important.J'ai appris beaucoup de chose grâce à toi. Pas comment créer des commandes ça restera hors de ma portée, mais déjà à naviguer, dire au Terminal où je suis et travaille, comment utiliser cat, sort, etc… des petites choses simples de base. Merci infiniment Nicosa! 🙏 -------------------- Mac mini M2 8C CPU/10C GPU/8Go RAM - OS Sonoma (pour Madame)
Mac Studio M2 Max (pour moi) J'ai été lourdement hospitalisé et l'info n'est pas facile à assimiler. Alors merci de votre clarté et surtout patience avec moi. |
|
|
31 Mar 2022, 22:03
Message
#33
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 3 026 Inscrit : 2 May 2007 Lieu : Région Parisienne (91) Membre no 85 838 |
J'ai appris beaucoup de chose grâce à toi. Pas comment créer des commandes ça restera hors de ma portée, mais déjà à naviguer, dire au Terminal où je suis et travaille, comment utiliser cat, sort, etc… des petites choses simples de base. C'est en mettant bout à bout des petits trucs, qu'on peut créer de plus grandes choses.La navigation par le terminal, c'est la base ; le fait de comprendre qu'on peut lui faire execute des actions sur des fichiers, le pas suivant. Merci infiniment Nicosa! 🙏 -------------------- Whoever fights monsters should see to it that in the process he does not become a monster; -------------------------------------------------------------------------------------------------------------------------------And when you look long into an abyss, the abyss also looks into you. - Friedrich Nietzsche -(issue de la préface de la novélisation "The Abyss" d'Orson Scott Card depuis le film eponyme) [refurb] MacBook Pro 13"(early2019) , QuadCore 2.7GHz, 16Go de RAM, 512Go, sous OSX 10.14 Mojave [refurb] MacMini Core2Duo 2.0GHz (early 2009), 1Go de RAM, DD 120Go 5400rpm, sous OSX 10.6.3 Snow Lepard + Mighty Mouse BT + Clavier BT "Alu" |
|
|
1 Apr 2022, 12:57
Message
#34
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 732 Inscrit : 18 Nov 2004 Lieu : Suisse Membre no 27 214 |
Hello Nicosa,
Je reviens sur l'aide que tu m'avais apporté dans l'autre sujet avec ton message: https://forum.macbidouille.com/index.php?s=...t&p=4405514 en me donnant ce code Code sed -n -i '' '/Jamb/p' monfichier.txt Peux-tu STP me dire ce qu'il écrire pour plusieurs mots? Le but est d'avoir une ligne de commande qui va conserver dans mon document QUE les lignes qui contiennent les mots que je vais renseigner. Peut-être répéter le /Jamb/p entre les ' en remplaçant le mot entre les / ? -------------------- Mac mini M2 8C CPU/10C GPU/8Go RAM - OS Sonoma (pour Madame)
Mac Studio M2 Max (pour moi) J'ai été lourdement hospitalisé et l'info n'est pas facile à assimiler. Alors merci de votre clarté et surtout patience avec moi. |
|
|
1 Apr 2022, 13:47
Message
#35
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 3 026 Inscrit : 2 May 2007 Lieu : Région Parisienne (91) Membre no 85 838 |
Code sed -n -i '' '/Jamb/p' monfichier.txt Peux-tu STP me dire ce qu'il écrire pour plusieurs mots? Le but est d'avoir une ligne de commande qui va conserver dans mon document QUE les lignes qui contiennent les mots que je vais renseigner. J'adapte et complète ma précédente explication :
Pour plusieurs "mots" (en réalité il s'agit de "suite de caractères", que cela forme un mot, plusieurs ou pas), il faut en effet remplacer le Jamb entre les "/" par une expression qui dit ce qu'on recherche. Par exemple, si je veux les lignes qui contiennent au moins une de ces 3 chaines de caractères :
Code Jamb|Ail|on Le pipe "|" signifie "ou", dans le sens ceci ou bien cela : ceci|celaCode % cat monFichier.txt Oignon 123 Poivrons 6333 Ail 628 Jambon 885 Pain 086 % sed -nE '/Jamb|Ail|on/p' monFichier.txt Oignon 123 Poivrons 6333 Ail 628 Jambon 885 Remarque que j'ai ajouté un "E" (après le "-n") pour lui dire de traiter la chaine de recherche en regex étendue (c'est une extension de l'expression régulière qui permet davantage de critères pour la recherche, notamment le pipe) Comme l'autre fois, si on veut que le travail se fasse sur le fichier qu'on lui soumet, il faudra utiliser le -i '' : Code % cat monFichier.txt
Oignon 123 Poivrons 6333 Ail 628 Jambon 885 Pain 086 % sed -i '' -nE '/Jamb|Ail|on/p' monFichier.txt % cat monFichier.txt Oignon 123 Poivrons 6333 Ail 628 Jambon 885 -------------------- Whoever fights monsters should see to it that in the process he does not become a monster; -------------------------------------------------------------------------------------------------------------------------------And when you look long into an abyss, the abyss also looks into you. - Friedrich Nietzsche -(issue de la préface de la novélisation "The Abyss" d'Orson Scott Card depuis le film eponyme) [refurb] MacBook Pro 13"(early2019) , QuadCore 2.7GHz, 16Go de RAM, 512Go, sous OSX 10.14 Mojave [refurb] MacMini Core2Duo 2.0GHz (early 2009), 1Go de RAM, DD 120Go 5400rpm, sous OSX 10.6.3 Snow Lepard + Mighty Mouse BT + Clavier BT "Alu" |
|
|
4 Apr 2022, 15:39
Message
#36
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 732 Inscrit : 18 Nov 2004 Lieu : Suisse Membre no 27 214 |
Hello,
J'ai tardé à répondre car je n'arrive pas à avoir un fonctionnement normal, ce qui m'a demandé du temps pour faire des recherches et essais. 1/ Je voudrais que la commande soit capable de comprendre le mot recherché qu'il soit en bas de casse ou capital (sans tenir compte des majuscules). Je n'ai pas de problème avec ça pour le moment, mais c'est au cas où la saisie ne serais pas rigoureuse, même si les exports des fichiers n'ont pas l'air de leur donner le choix. 2/ Le mot recherché est retenu partout et même partiellement, si je choisis de rechercher jambon ça va conserver la ligne qui contient jambonneau (😂 l'exemple me fait rire) 3/ Pour être sûr à 100% que la ligne avec le mot retenu reste, je peux ajouter un * après le mot à rechercher car il existe dans le fichier source. Ors, le résultat conserve les lignes qui ne contiennent pas ce * après le mot recherché, comme si le * n'était pas pris en compte. Exemple, je cherche FENECH* et ça va garder les lignes qui contiennent FENECH (sans le *) 4/ La sélection est anormalement élargie. Je retrouve dans le résultat une ligne dont le mot recherché n'y est pas mais y ressemble beaucoup, (on dirait une recherche Google qui propose ce qui se rapproche 😂) Par exemple, si je cherche FENECH, dans le résultat j'ai une ligne non désirée car elle contient SCHUFFENECKER En fait, il faut rechercher l'expression exact bas de casse ou capital AVEC le *, ni plus, ni moins. Tu peux m'aider stp? Merci (ça n'urge pas je te rappel, c'est un travail personnel, pas un job). -------------------- Mac mini M2 8C CPU/10C GPU/8Go RAM - OS Sonoma (pour Madame)
Mac Studio M2 Max (pour moi) J'ai été lourdement hospitalisé et l'info n'est pas facile à assimiler. Alors merci de votre clarté et surtout patience avec moi. |
|
|
4 Apr 2022, 16:38
Message
#37
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 3 026 Inscrit : 2 May 2007 Lieu : Région Parisienne (91) Membre no 85 838 |
Le truc c'est que * en regexp c'est un caractère spécial : il sert à quantifier le nombre de l'elements qui le précède : t* correspond donc à t, tt, ttttttt ou même rien du tout (zéro lettre "t")
Si c'est vraiment * que tu veux garder, il faut peut-être l'échapper avant, donc mettre : Code \* C'est à dire un anti-slash (l'inverse d'un slash /) avant le caractère *Je te laisse tester ça de toi-même. Tiens moi au jus. [edit] Par exemple, si je cherche FENECH, dans le résultat j'ai une ligne non désirée car elle contient SCHUFFENECKER C'est normal si tu recherches FENECH*, puisque cela peut correspondre à "0 ou plusieurs" H, donc :
Du coup SCHUFFENECKER est pris, puisqu'il contient bien FENEC. (c'est à dire FENECH avec 0 lettre H, comme le 1er de ma liste) Après, c'est un peu la limite des regexp. C'est pas forcement fait pour énoncer beaucoup de critères plus ou moins imbriqués. C'est là qu'un language SQL aurait l'avantage. Ce message a été modifié par Nicosa - 4 Apr 2022, 16:39. -------------------- Whoever fights monsters should see to it that in the process he does not become a monster; -------------------------------------------------------------------------------------------------------------------------------And when you look long into an abyss, the abyss also looks into you. - Friedrich Nietzsche -(issue de la préface de la novélisation "The Abyss" d'Orson Scott Card depuis le film eponyme) [refurb] MacBook Pro 13"(early2019) , QuadCore 2.7GHz, 16Go de RAM, 512Go, sous OSX 10.14 Mojave [refurb] MacMini Core2Duo 2.0GHz (early 2009), 1Go de RAM, DD 120Go 5400rpm, sous OSX 10.6.3 Snow Lepard + Mighty Mouse BT + Clavier BT "Alu" |
|
|
4 Apr 2022, 19:03
Message
#38
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 732 Inscrit : 18 Nov 2004 Lieu : Suisse Membre no 27 214 |
-------------------- Mac mini M2 8C CPU/10C GPU/8Go RAM - OS Sonoma (pour Madame)
Mac Studio M2 Max (pour moi) J'ai été lourdement hospitalisé et l'info n'est pas facile à assimiler. Alors merci de votre clarté et surtout patience avec moi. |
|
|
Nous sommes le : 27th September 2024 - 00:08 |