SED ou awk ou nawk

Bonjour,

Besoin d'un expert sed ou awk pour mettre tout sur la même ligne

CONDITION IN

PBIEXXD000 P_BIL_EDI START BIL EDI

CONDITION OUT

PBIEXXD030 P_BIL_EDI FINS8060 2626 PBIEXXD030
PEDIXXD021 P_BIL_EDI Transfert EDI FINB8050 BRDL to ECFRANCE PEDIXXD021

D'avance un grand merci.

Cdt.

31 réponses

Résumé de la discussion

Des échanges portent sur l'utilisation de sed ou awk pour mettre toutes les conditions sur une même ligne dans un fichier de règles, afin d'obtenir une sortie consolidée et lisible. Plusieurs propositions montrent l'emploi de sed -f avec des scripts comme new.sed ou new.new.sed sur des listes ALL_COND_IN_OUT.lst, avec des résultats séparés par des tabulations. Des échanges abordent aussi les limites selon les systèmes (AIX, Solaris, HP-UX, etc.) et l'absence de commande sed --version, conduisant à privilégier une vérification de version ou un ajustement du script. En parallèle, des échanges montrent que la sortie attendue peut être atteinte avec des scripts tabulés, mais nécessite encore des ajustements et des tests croisés entre entrée et sortie.

Bobot (l’IA à votre service)
  1. lol....En tout cas encore un grand merci à toi zipe31.

    A un de ces 4....:) :) :): )

    Amicalement, Rahon
    1. Et si j'integre le script sed à un programme awk tu penses que je pourrais obtenir le tout ds la même colonne ou alors est-ce peine perdue ?
      1. Contributeur
        Peine perdue, non, mais ça risque d'être coton ;-(
    2. En tout cas, un grand merci à toi. Tu es très fort et m'impressionne.

      Suite à la modification demandée

      $ cat new.good.sed
      #n
      :debut
      /^---/ {
      h
      :boucle
      n
      /^---/ !{
      H
      $ {
      b change
      }
      b boucle
      }
      :change
      x
      s/\n\n*\(CON\)/ \1/g
      s/\n\n*/ /g
      s/\\#\\#*/\n&/g
      p
      }
      x
      b debut
      $ sed -f new.good.sed ALL_COND_IN_OUT.lst
      --- P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 --- CONDITION IN P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
      --- P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 --- CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 CONDITION OUT P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ########################################################################
      --- P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 --- CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 CONDITION OUT P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ########################################################################
      --- P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 --- CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
      --- P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 --- CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 CONDITION OUT P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ########################################################################
      --- P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 --- CONDITION IN P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
      --- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 --- CONDITION IN P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 CONDITION OUT ########################################################################
      --- P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 --- CONDITION IN CONDITION OUT P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 P_BIL_CFF_FOREIGN

      ET ENCORE UN GRAN GRAND MERCI...
      1. Déjà là je vais pouvoir faire de meilleurs choses avec le fichier :)

        cat new.new.sed
        #n
        :debut
        /^---/ {
        h
        :boucle
        n
        /^---/ !{
        H
        $ {
        b change
        }
        b boucle
        }
        :change
        x
        s/\n\n*\(CON\)/\ \1/g
        s/\n\n*/ /g
        s/\\#\\#*/\n&/g
        p
        }
        x
        b debut
        $ sed -f new.new.sed ALL_COND_IN_OUT.lst
        --- P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 --- CONDITION IN P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 --- CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 CONDITION OUT P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 --- CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 CONDITION OUT P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 --- CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 --- CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 CONDITION OUT P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 --- CONDITION IN P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 --- CONDITION IN P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 CONDITION OUT ########################################################################
        --- P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 --- CONDITION IN CONDITION OUT P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ########################################################################

        =========

        Par contre peut-on afficher les COND IN OU OUT lorsqu'il y en a plusieurs au lieu de les avoir sur la même ligne mais plus tôt de les mettre à la ligne dans la même colonne.

        Je sais que j'abuse un peu de ton aide et géni mais si on arrive à faire ca alors là c'est le pied....
        1. Contributeur
          Par contre peut-on afficher les COND IN OU OUT lorsqu'il y en a plusieurs au lieu de les avoir sur la même ligne mais plus tôt de les mettre à la ligne dans la même colonne.
          Euh... là c'est peut être un peu trop demandé à "sed" ;-(

          Juste un truc, il y a un anti-slash en trop dans ton code :

          s/\n\n*\(CON\)/\     \1/g 

          à transformer en :
          s/\n\n*\(CON\)/     \1/g 
      2. sed -f new.new.sed ALL_COND_IN_OUT.lst
        --- P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ---\tCONDITION IN P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 \tCONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 ---\tCONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 \tCONDITION OUT P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 ---\tCONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 \tCONDITION OUT P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ---\tCONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 \tCONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ---\tCONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 \tCONDITION OUT P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ---\tCONDITION IN P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 \tCONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ---\tCONDITION IN P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 \tCONDITION OUT ########################################################################
        --- P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ---\tCONDITION IN\tCONDITION OUT P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ########################################################################
        $ cat new.new.sed
        #n
        :debut
        /^---/ {
        h
        :boucle
        n
        /^---/ !{
        H
        $ {
        b change
        }
        b boucle
        }
        :change
        x
        s/\n\n*\(CON\)/\\t\1/g
        s/\n\n*/ /g
        s/\\#\\#*/\n&/g
        p
        }
        x
        b debut
        1. Contributeur
          ;-((

          Essaie de remplacer "\\t" par 5 espaces :

          s/\n\n*\(CON\)/     \1/g
      3. CA donne des t au lieu de tabulations

        sed -f new.new.sed ALL_COND_IN_OUT.lst
        --- P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ---tCONDITION IN P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 tCONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 ---tCONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 tCONDITION OUT P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 ---tCONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 tCONDITION OUT P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ---tCONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 tCONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ---tCONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 tCONDITION OUT P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ---tCONDITION IN P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 tCONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ---tCONDITION IN P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 tCONDITION OUT ########################################################################
        --- P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ---tCONDITION INtCONDITION OUT P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ########################################################################
        $ cat new.new.sed
        #n
        :debut
        /^---/ {
        h
        :boucle
        n
        /^---/ !{
        H
        $ {
        b change
        }
        b boucle
        }
        :change
        x
        s/\n\n*\(CON\)/\t\1/g
        s/\n\n*/ /g
        s/\\#\\#*/\n&/g
        p
        }
        x
        b debut
        1. Contributeur
          Doubles les protections :

          s/\n\n*\(CON\)/\\t\1/g 
      4. Voici ce que ca donne, j'ai toujours les tabulations

        sed -f new.sed ALL_COND_IN_OUT.lst
        --- P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 ;CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 ---;CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ;CONDITION OUT P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ;CONDITION OUT P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ;CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ---;CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ;CONDITION OUT P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 ;CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ---;CONDITION IN P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ;CONDITION OUT ########################################################################
        --- P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ---;CONDITION IN;CONDITION OUT P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ########################################################################
        $ cat new*
        #n
        :debut
        /^---/ {
        h
        :boucle
        n
        /^---/ !{
        H
        $ {
        b change
        }
        b boucle
        }
        :change
        x
        s/\n\n*\(CON\)/;\1/g
        s/\n\n*/ /g
        s/\\#\\#*/\n&/g
        s/\n\n*\(CON\)/\t\1/g
        p
        }
        x
        b debut
        1. Contributeur
          Change cette partie :
          :change
          x
          s/\n\n*\(CON\)/;\1/g
          s/\n\n*/ /g
          s/\\#\\#*/\n&/g
          s/\n\n*\(CON\)/\t\1/g 

          Comme ça :

          :change
          x
          s/\n\n*\(CON\)/\t\1/g
          s/\n\n*/ /g
          s/\\#\\#*/\n&/g
      5. OUAOUUUUUUUUUUUU

        sed -f new.sed ALL_COND_IN_OUT.lst
        --- P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 ;CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 ---;CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ;CONDITION OUT P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ;CONDITION OUT P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ;CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ---;CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ;CONDITION OUT P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 ;CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ---;CONDITION IN P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ;CONDITION OUT ########################################################################
        --- P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ---;CONDITION IN;CONDITION OUT P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ########################################################################

        Tu es trop fort :) :) :)
        1. Contributeur
          Reste plus qu'à changer le ";" par "\t" comme suit (là aussi si ça ne marche pas essaie en doublant la protection) :

          s/\n\n*\(CON\)/\t\1/g 
      6. TOUT AS FAIT GRAND CHEF !!!! :))
        1. Contributeur
          Bon remets la ligne "s/\#\#*/\n&/g" mais doubles les protections :

          s/\\#\\#*/\n&/g
      7. La on voit pas la diff mais sur ma mire je le vois vraiment.
        1. Contributeur
          Oui j'ai vu ;-))

          Reste plus qu'à substituer les ";" par des tabulations et faire un retour à la ligne avant les "###", non ?
      8. OUAOUUUUUUU

        sed -f new.sed ALL_COND_IN_OUT.lst
        --- P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 ;CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 ---;CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ;CONDITION OUT P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ;CONDITION OUT P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ;CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ---;CONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ;CONDITION OUT P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 ########################################################################
        --- P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ---;CONDITION IN P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 ;CONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ########################################################################
        --- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ---;CONDITION IN P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 ;CONDITION OUT ########################################################################
        --- P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 ---;CONDITION IN;CONDITION OUT P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 ########################################################################

        C vraiment pas mal du tout....
        1. sed -f new.sed ALL_COND_IN_OUT.lst
          sed: Function s/\#/\#*/\n&/g cannot be parsed.
          $

          sed -f new.sed ALL_COND_IN_OUT.lst
          sed: Function s/\#\#*/\n&/g cannot be parsed.
          $

          Si près du but :)

          Cdt
          1. Contributeur
            Supprime cette ligne on verra plus tard...
        2. Oups,

          $ sed -f new.sed ALL_COND_IN_OUT.lst
          sed: Function s/##*/\n&/g cannot be parsed.
          $ cat new.sed
          #n
          :debut
          /^---/ {
          h
          :boucle
          n
          /^---/ !{
          H
          $ {
          b change
          }
          b boucle
          }
          :change
          x
          s/\n\n*\(CON\)/;\1/g
          s/\n\n*/ /g
          s/##*/\n&/g
          p
          }
          x
          b debut
          1. Contributeur
            Protège les "#" :
            s/\#\#*/\n&/g 
        3. Bonjour,

          avec 3 jours de recul :), un peu de repos ca fais du bien.
          J'ai donc tester ce que tu m'as dis mais je ne vois pas ou tu veux aller....

          Quand j'execute ce que tu m'as donné sans rien modifier ca donne ca

          x0a########################################################################

          --- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ---

          x09CONDITION IN

          P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025
          P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026
          P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040

          x09CONDITION OUT

          x0a########################################################################

          Puis j'ai essayé de modifier les champs

          $ cat gras*
          :z
          N
          $ !b z
          s/\x0a/ /g
          s/CON/\IN/g
          s/ \(--- [A-Z]\)/\x0a\1/g
          s/\s\+;/\OUT/g
          s/##*/ /g

          Ca donne ca...

          --- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 ---

          INDITION IN

          P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025
          P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026
          P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040

          INDITION OUT

          Je pense que je ne fais pas ce que tu aimerais que je teste...

          Cdt, Rahon
          1. Contributeur
            Bon chez moi les 2 solutions marchent très bien et ne pouvant faire de tests sur un système AIX et sa version de "sed", je ne sais plus quoi te dire ;-(

            Essaye avec ça (à mettre dans un fichier comme précédemment) :

            #n
            :debut
            /^---/ {
                h
                :boucle
                n
                /^---/ !{
                    H
                    $ {
                        b change
                    }
                    b boucle
                }
                :change
                x
                s/\n\n*\(CON\)/;\1/g
                s/\n\n*/ /g
                s/##*/\n&/g	
                p
            }
            x
            b debut
        4. Je reprendrais ce soir, en tout cas un grand merci à toi.
          Je te dirais si cela a fonctionne encore merci pour ton aide.

          Cdt, Rahon
          1. C pas mal, mais ca me donne ca

            sed -f rahon.sed ALL_COND_IN_OUT.lst >> TOTO.txt

            cat TOTO.txt

            --- P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 --- tCONDITION IN P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 tCONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 n########
            ################################################################ n--- P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 --- tCONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD000 tCO
            NDITION OUT P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 n######################################################################## n--- P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 --- t
            CONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 tCONDITION OUT P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 n#################################################################
            ####### n--- P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 --- tCONDITION IN P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 tCONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999
            n######################################################################## n--- P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 --- tCONDITION IN P_BIL_CFF_FOREIGN START CFF FOREIGN PBIFXXD0
            00 tCONDITION OUT P_BIL_CFF_FOREIGN FINB0201 379 PBIFXXD020 P_BIL_CFF_FOREIGN FINB0206 503 PBIFXXD026 n######################################################################## n
            --- P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 --- tCONDITION IN P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 tCONDITION OUT P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 n########
            ################################################################ n--- P_BIL_CFF_FOREIGN FIN CFF FOREIGN PBIFXXD0999 --- tCONDITION IN P_BIL_CFF_FOREIGN FINS0202 427 PBIFXXD025 P_BIL
            _CFF_FOREIGN FINB0206 503 PBIFXXD026 P_BIL_CFF_FOREIGN FINB8010 890 PBIFXXD040 tCONDITION OUT n######################################################################## n--- P_BIL_
            CFF_FOREIGN START CFF FOREIGN PBIFXXD000 --- tCONDITION IN tCONDITION OUT P_BIL_CFF_FOREIGN FINB8000 176 PBIFITD030 P_BIL_CFF_FOREIGN FINB2010 378 PBIFXXD010 n#################
            #######################################################

            Ca me donne pas cela en forme de colonne.
            1. Contributeur
              Essaie de modifier ce qui est en gras :

              :z
              N
              $ !b z
              s/\x0a/ /g
              s/CON/\x09&/g
              s/ \(--- [A-Z]\)/\x0a\1/g
              s/\s\+;/\x09/g
              s/##*/\x0a&/g
          2. Contributeur
            Bon c'est pas grave.

            Crées un fichier avec ce contenu :

            $ cat rahon.sed
            :z
            N
            $ !b z
            s/\n/ /g
            s/CON/\t&/g
            s/ \(--- [A-Z]\)/\n\1/g
            s/\s\+;/\t/g
            s/##*/\n&/g


            Et appelles-le comme suit :
            $ sed -f rahon.sed fichier

            1. AIX ecux0999 3 5 00C8324C4C00

              par contre le sed -version ou sed --version ne fonctionne pas.
              • 1
              • 2