IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Filtrer un fichier avec grep


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut Filtrer un fichier avec grep
    Bonjour,

    je souhaiterais filtrer un fichier via une analyse syntaxique ou autre. A l'issue je souhaite intégrer le traitement dans un script tcsh.

    Je vous pose le problème:

    J'ai un fichier texte avec des patterns qui se répètent:

    -----------My.TXT----------
    CELL alpha_1
    toto a.1
    toto a.2
    toto a.3
    CELL giga_2
    toto a.1
    toto a.2
    toto a.3
    CELL misc_3
    toto b.1
    toto b.2
    toto c.4
    toto e.8
    toto j.1
    ---------------------------

    Donc les patterns qui se répètent sont CELL et toto mais le reste est variable.

    Dans une boucle foreach au premier passage je souhaiterais partiellement rediriger le contenue de My.TXT de CELL alpha_1 a CELL giga_2(non inclu) dans un fichier temporaire puis au deuxième tour de CELL giga_2 a CELL misc_3(non inclu) etc...

    Avec WC je peux savoir combien il y a de fois CELL dans mon fichier My.TXT ce qui me permet de me donner la longueur de ma boucle mais je bute avec les expressions régulière dans le grep afin de rediriger le nombre exact de ligne après CELL xxx_x

    Je regardes activement les option de grep ==> grep -AB ou grep -C, grep -m avec le nbre de CELL, je suis dans l'exploratoire...

    En premier lieu je me suis dit j'affiche (parcours le fichier) de CELL alpha_1 a CELL giga_2 soit des que je rencontre une deuxième fois CELL j'arrète de parcourir le fichier...

    Merci pour votre aide
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    francois@h2g2:/tmp/mozilla_francois0$ cat > oto
    -----------My.TXT----------
    CELL alpha_1
    toto a.1
    toto a.2
    toto a.3
    CELL giga_2
    toto a.1
    toto a.2
    toto a.3
    CELL misc_3
    toto b.1
    toto b.2
    toto c.4
    toto e.8
    toto j.1
    ---------------------------
    francois@h2g2:/tmp/mozilla_francois0$ i=0 ; while read; do sed '/CELL alpha_'$i'/,/CELL/ !d;$d' oto >r$i ; echo $?; export i=$(( $i + 1)) ; echo $i ; done < oto  #selection de CELL.*compteur a cell suivant ne pas supprimer -> copie dans fichier rnumero_compte et enfin compteur=luimeme+1
    francois@h2g2:/tmp/mozilla_francois0$ ls -l r{1,2,3}
    -rw-r--r-- 1 francois francois 52 Dec 12 16:34 r1
    -rw-r--r-- 1 francois francois 51 Dec 12 16:34 r2
    -rw-r--r-- 1 francois francois 57 Dec 12 16:34 r3
    francois@h2g2:/tmp/mozilla_francois0$ cat r3
    CELL misc_3
    toto b.1
    toto b.2
    toto c.4
    toto e.8
    toto j.1
    francois@h2g2:/tmp/mozilla_francois0$ cat r1
    CELL alpha_1
    toto a.1
    toto a.2
    toto a.3
    CELL giga_2
    francois@h2g2:/tmp/mozilla_francois0$ cat r2
    CELL giga_2
    toto a.1
    toto a.2
    toto a.3
    CELL misc_3
    francois@h2g2:/tmp/mozilla_francois0$
    une deuxieme boucle seh pour virer la last line dans chaue fichier si elle contient CELL et c est fini
    je te laisse tester comprendre et mettre en script mais je pense que tu as tout la

  3. #3
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Bonsoir et merci pour la réponse, je vais tenter de restituer ce que j'ai compris:

    ==> assignation de la valeur 0 a la variable i

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while read; do ... done < oto
    ==> on entre dans une boucle tant que avec lecture d'un paramètre en entré. les exemples que j'ai vu ont toujours un paramètre après read et pourquoi le ; (passage a la ligne) ? pas très bien compris le done < oto ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/CELL alpha_'$i'/,/CELL/ !d;$d'
    ==> je ne connais sed que pour la substitution la je devine que sed sequence le texte entre chaque CELL (vu la redirection et ton commentaire) mais je ne comprends pas vraiment le mécanisme trop de lacune !d;$d' !? j'ai commencé a lire le grymoire il y a une grosse partie sur sed...

    ==> Redirection du bornage CELL ... CELL dans un fichier r1 puis r2 et r3 , voir incrémentation plus loin

    ==> code retour du dernier echo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export i=$(( $i + 1)) ;
    ==> incrémentation de la variable $i (compteur)

    on affiche $i (compteur)

    Merci pour ton aide je vais tenter de le faire fonctionner.

    Nb: pour les balise CODE je ne connais que CODE=C pour le c, existe t-il une page qui indique ce qu'il faut mettre selon le langage utilisé ?

    Encore merci.
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    ce n'est pas du tcsh.

    t'as décidé de changer de shell ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Citation Envoyé par julien terrier Voir le message
    Nb: pour les balise CODE je ne connais que CODE=C pour le c, existe t-il une page qui indique ce qu'il faut mettre selon le langage utilisé ?.
    Ici, dans le forum Shell, si tu indiques CODE sans rien préciser, la coloration syntaxique sera automatiquement celle de sh. Et ceci pour chaque forum avec un langage associé
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Merci ca marche mieux, je suis habitué a la section embarqué du coup il n'y a pas de langage par défaut il me semble...
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  7. #7
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    le sed plus haut je le soupçonne d'avoir été modifié entre le moment où il était dans la console et celui où il s'est retrouvé sur le forum frp31 (/CELL alpha_/ ne pourra match qu'une seule fois)

    sinon en attendant la réponse à la question de N_BaH; awk un jour, awk toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $ awk '/^CELL/ {c++} {print >> "fichier" c ".txt"}' My.TXT
    $ cat fichier1.txt
    CELL alpha_1
    toto a.1
    toto a.2
    toto a.3
    $ cat fichier2.txt
    CELL giga_2
    toto a.1
    toto a.2
    toto a.3
    $ cat fichier3.txt
    CELL misc_3
    toto b.1
    toto b.2
    toto c.4
    toto e.8
    toto j.1
    (c'est comme ça que j'ai compris la problématique en tous cas, header inclus, footer non inclus, quant à mettre dans des fichiers temporaires séparés c'était bien ça l'idée ?)

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    awk un jour, awk toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^CELL/ {C++} {print >> "fichier" C ".txt"}' My.TXT
    Tiens donc?
    Du C++ ???
    Dans un fichier C ?


  9. #9
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ce n'est pas du tcsh.

    t'as décidé de changer de shell ?
    Non c'est bien du tcsh que je souhaite utiliser, il faut vraiment que je me tourne vers le bash j'ai fais quelques script en bash mais c'était vraiment dans un but pédagogique...


    Sinon pour reprendre le fil du sujet, awk déjà un peu manipuler mais vraiment je ne suis pas expert, après sed autres outils a mettre dans la liste a "a apprendre et vite" la liste s'allonge....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^CELL/ {C++} {print >> "fichier" C ".txt"}' My.TXT
    ==> Dès que l'on rencontre CELL / on incrémente c { on redirige std_out dans fichierC.txt } fichier source = My.TXT

    C'est a peu près ce qui se passe ou me gourge ?
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  10. #10
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par julien terrier Voir le message
    C'est a peu près ce qui se passe ou me gourge ?
    non c'est cela même. c'est une structure en bloc {...} comme en C, donc le premier bloc est conditionnel de l'expression /^CELL/, tandis que le deuxième bloc s'exécute pour chaque ligne quoiqu'il arrive

  11. #11
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Ok ben merci bufferbob alors je vais tester ca alors asap...

    Mais j'attends toujours les explications de frp31 entre autre sur sed enfin si le coeur lui en dis...
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  12. #12
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Citation Envoyé par julien terrier Voir le message
    Non c'est bien du tcsh que je souhaite utiliser[...]
    mais
    Code tcsh : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ i=0
    i=0: Command not found.
    $ while read line ; do echo "$line" ; done < $monFichier
    while: Expression Syntax.
    line: Undefined variable.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    mais
    Code tcsh : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ i=0
    i=0: Command not found.
    $ while read line ; do echo "$line" ; done < $monFichier
    while: Expression Syntax.
    line: Undefined variable.
    Je comprends, cette partie ne sera pas compatible avec une partie des 200 et quelques ligne que j'ai ecris en tcsh...

    Par contre en décoléré je peux tout de même le tester il me semble car j'ai ouïe dire que si je n'ajoute pas la ligne Shebang unix chargerait le shell adéquat, j'ai cru comprendre cela, peut etre que j'ai mal compris?
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  14. #14
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par julien terrier Voir le message
    j'ai ouï dire que si je n'ajoute pas la ligne Shebang unix chargerait le shell adéquat, j'ai cru comprendre cela, peut etre que j'ai mal compris?
    Unix ne va pas parser le fichier pour déterminer quel est le programme adequat!

    Si le script est appelé par un shell /bin/monshell -c monscript, même s'il y a un shebang, le script sera quand même interprété par /bin/monshell.

    Sinon, s'il y a un shebang sur la première ligne, c'est celui-ci qui interprète le script (à noter que ce peut être n'importe quelle commande, pas seulement un shell).

    Sinon il lance le shell par défaut (variable $SHELL (à vérifier...)).

  15. #15
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Bonjour,

    je reprends le thread car a cause de mon petit niveau je n'arrive pas a trouver une solution convenable pour réaliser ce que je veux.

    La technique du awk marche bien et me crée plusieurs fichier.txt ==> fichier1.txt, fichier2.txt etc... (dépend du nombre de fois qu'il trouve le pattern CELL dans le fichier initial My.TXT).

    L'objectif pour moi étant de faire la mm commande entre le fichier My.TXT et Mysecond.TXT bien entendu en modifiant la nomination des fichiers par fichier_db par exemple fichier_db1.txt, fichier_db2.txt etc...

    Du coup je retrouve dans mon directory avec fichier1.txt (issue de My.TXT) et fichier_db1.txt ( issue de Mysecond.txt ) etc...

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/bin/csh
     
    awk '/^CELL/ {c++} {print >> "fichier" c ".txt"}' $1
    awk '/^CELL/ {c++} {print >> "fichier_db" c ".txt"}' $2
    @ a = 1
    @ MAX=500
    @ b = 0
    @ c = 0
    # count from 1 to $MAX
     
    while ( $a <= $MAX )
    	if (-e fichier$a.txt )then
    		@ b++
    	endif
    	if (-e fichier_db$a.txt )then
    		@ c++
    	endif
    	@ a++
    end
    echo $b
    echo $c
    Je compte le nbre de fichier en pensant en avoir besoin pour la suite.

    Pour que ca soit plus clair:

    My.TXT:
    -----------My.TXT----------
    CELL alpha_1
    toto a.1
    toto a.2
    toto a.3
    CELL giga_2
    toto a.1
    toto a.2
    toto a.3
    CELL misc_3
    toto b.1
    toto b.2
    toto c.4
    toto e.8
    toto j.1
    ---------------------------
    A l'issue de la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^CELL/ {c++} {print >> "fichier" c ".txt"}' $1
    j'aurai dans mon directory trois fichier:

    fichier1.txt:
    ---------------
    CELL alpha_1
    toto a.1
    toto a.2
    toto a.3
    ---------------

    fichier2.txt:
    --------------
    CELL giga_2
    toto a.1
    toto a.2
    toto a.3
    --------------

    fichier3.txt:
    --------------
    CELL misc_3
    toto b.1
    toto b.2
    toto c.4
    toto e.8
    toto j.1
    --------------
    Le deuxième args de mon script et le fichier Mysecond.TXT et la commande du script qui sera exécuté sur ce fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^CELL/ {c++} {print >> "fichier_db" c ".txt"}' $2
    Mysecond.TXT:
    -----------Mysecond.TXT----------

    CELL giga_2
    toto a.1
    toto a.2
    toto a.3
    CELL misc_3
    toto b.1
    toto b.2
    toto c.4
    toto e.8
    toto j.1
    CELL alpha_1
    toto a.1
    toto a.2
    toto a.3
    ---------------------------
    On peut remarquer une inversion en comparaison avec le fichier My.TXT ce qui donne:

    fichier_db1.txt:
    --------------
    CELL giga_2
    toto a.1
    toto a.2
    toto a.3
    --------------
    fichier_db2.txt:
    --------------
    CELL misc_3
    toto b.1
    toto b.2
    toto c.4
    toto e.8
    toto j.1
    --------------

    fichier_db3.txt:
    ---------------
    CELL alpha_1
    toto a.1
    toto a.2
    toto a.3
    ---------------
    Du coup fichier1.txt == fichier_db3.txt - fichier2.txt == fichier_db1.txt et fichier3.txt == fichier_db2.txt
    Ce dont je suis certains c'est que la première ligne des fichiers est identique dans les deux fichiers exemple fichier1.txt ==> CELL alpha_1 et fichier_db3.txt: ==> CELL alpha_1 le reste peut changer toto a.1 dans le fichier1.txt peut devenir tata b.2 dans le fichier_db3.txt

    Donc je souhaite récupérer la première ligne des fichiers crée par le awk
    Faire une double boucle for ou foreach comparer les chaines de caractère afin d’appairer les fichiers entre eux.
    Une fois que les fichiers sont appairés je souhaites faire un diff ou tkdiff pour voir ce qui a changé exemple si toto a.1 est devenu tata b.2 ou si une ligne s'est ajoutée.


    Enfaite je vais l'ecrire en bash (c'est l'occasion) puisque ce script sera decorrele du précédent qui est en tcsh

    J'espère que c'est plus clair.

    Merci pour votre aide.
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  16. #16
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 286
    Points : 12 742
    Points
    12 742
    Par défaut
    Bonjour,

    Pas tout compris du besoin, tu veux comparer la première ligne de chaque fichier issue de My.txt et MySecond.txt ?

    Si c'est le cas, c'est faisable directement depuis la phase awk, donc tiens-tu vraiment le faire en tcsh ?
    Cordialement.

  17. #17
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    D'autant plus que csh, comme tcsh, n'est pas vraiment à sa place dans le forum POSIX.
    ɹǝsn *sıɹɐlos*

  18. #18
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    D'autant plus que csh, comme tcsh, n'est pas vraiment à sa place dans le forum POSIX.
    la section "Shell et commandes GNU" est plus appropriée ?
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  19. #19
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 286
    Points : 12 742
    Points
    12 742
    Par défaut
    Bonne question, car csh et tcsh ne sont pas gnu non plus

    Sur quel système (OS) travailles-tu ?

    J'aurai tendance à dire que si tu n'es pas sous linux mais sous un unix propriétaire et que tu utilises les commandes d'origines comme le awk par exemple, vaut mieux que tu restes sur ce forum.
    Si tu utilises des commandes de package gnu comme gnu awk par exemple, oui, tu peux aller vers l'autre forum.

    Mais, pourquoi rester sur csh ou tcsh, tu es sur un historique trop lourd pour pouvoir au moins commencer à changer ?

    Et sinon, toujours pas vu de réponses aux questions précédemment posées...
    Cordialement.

  20. #20
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Bonjour Julien, je "crois" avoir plus ou moins compris ce que tu veux, mais ajouter un peu de clarté ne serait pas du luxe!

    Je lance une première réponse concernant le système et le choix tcsh/bash... (la suite, plus tard)

    Peux-tu nous dire sur quel système/OS tu travailles ?

    Peux-tu aussi nous dire ce que répondent les commandes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    which tcsh
    which bash
    which csh
    which ksh
    Si ton système com/sup-porte un bourne shell (/bin/sh), voire un bash (/bin/bash par exemple), alors il est important de savoir qu'il est tout à fait possible de "mélanger" du tcsh existant avec du nouveau en bash, à condition de séparer les fichiers. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    cat > test1.bash <<EOF
    #!/bin/bash
    level=\${1:-0}
    if test \$level -le 0
    then echo "Bash arrête"
    exit 0
    fi
    echo "ceci est exécuté par BASH (level=\$level) et appelle un script concurrent"
    ((level--))
    ./test1.tcsh \$level
    EOF
    chmod +x test1.bash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    cat > test1.tcsh <<EOF
    #!/bin/tcsh
    @ level = \$1
    if ( \$level <= 0 ) then
        echo "Tcsh arrête"
        exit 0
    endif
    echo "ceci est exécuté par TCSH (level=\$level) et appelle un script concurrent"
    @ level--
    ./test1.bash \$level
    EOF
    chmod +x test1.tcsh
    Et ça marche!

    Sur mon mac, il me dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ ./test1.tcsh 5
    ceci est exécuté par TCSH (level=5) et appelle un script concurrent
    ceci est exécuté par BASH (level=4) et appelle un script concurrent
    ceci est exécuté par TCSH (level=3) et appelle un script concurrent
    ceci est exécuté par BASH (level=2) et appelle un script concurrent
    ceci est exécuté par TCSH (level=1) et appelle un script concurrent
    Bash arrête
     
    uname -a
    Darwin MBPR15-jack 15.6.0 Darwin Kernel Version 15.6.0: Mon Jan  9 23:07:29 PST 2017; root:xnu-3248.60.11.2.1~1/RELEASE_X86_64 x86_64
    De cette manière, tu peux choisir de commencer à écrire des morceaux en bash (ou sh) et les appeler depuis l'existant (en tcsh). (et réciproquement, si besoin!)

    Et tu auras probablement plus de soutien en bash qu'en tcsh! (paix à son âme! )

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 11
    Dernier message: 17/01/2010, 14h10
  2. Filtrer avec Grep
    Par sebys dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 14/04/2008, 15h31
  3. Recherche fichier avec grep
    Par Fluxy dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 21/12/2007, 12h25
  4. Filtrer fichiers avec FileDialog ?
    Par m@t dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 04/11/2005, 19h33
  5. Grep pour filtrer le fichier log
    Par devdev2003 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/02/2005, 05h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo