SED ou awk ou nawk

rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
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

rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
La on voit pas la diff mais sur ma mire je le vois vraiment.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Oui j'ai vu ;-))

Reste plus qu'à substituer les ";" par des tabulations et faire un retour à la ligne avant les "###", non ?
0
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
Par contre que faisais la ligne que nous avons supprimé...
0
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
TOUT AS FAIT GRAND CHEF !!!! :))
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Bon remets la ligne "s/\#\#*/\n&/g" mais doubles les protections :

s/\\#\\#*/\n&/g
0
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
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 :) :) :)
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
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
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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
0
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
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
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Doubles les protections :

s/\n\n*\(CON\)/\\t\1/g 
0
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   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
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
;-((

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

s/\n\n*\(CON\)/     \1/g
0
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
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....
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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 
0
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   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...
0
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
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 ?
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Peine perdue, non, mais ça risque d'être coton ;-(
0
rahon93 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
lol....En tout cas encore un grand merci à toi zipe31.

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

Amicalement, Rahon
0