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 -
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.
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.
A voir également:
- SED ou awk ou nawk
- Awk strftime - Forum Shell
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? - Guide
- Comptage des caractères dans Word ✓ - Forum Word
- Sed et ses caprices (ou les miens) ✓ - Forum Linux / Unix
- Sed crlf - Astuces et Solutions
31 réponses
En supprimant les lignes vides.
Mais je demande plus maintenant.
J'aimerai afficher le résultat ci-dessous
--- PBIBXXD025 ---
CONDITION IN
START DAILY PBIBXXD000
PBILXXD010
CONDITION OUT
PBIBXXD030
En forme de colonne. Colonne 1 NOM : PBIBXXD025
2 CONDITION IN
3 CONDITION OUT
Est-ce possible ? J'ai un fichier contenant 10000 lignes auquels j'aimerai appliquer cette règle.
Un grand merci d'avance.
Cdt.Rahon
Mais je demande plus maintenant.
J'aimerai afficher le résultat ci-dessous
--- PBIBXXD025 ---
CONDITION IN
START DAILY PBIBXXD000
PBILXXD010
CONDITION OUT
PBIBXXD030
En forme de colonne. Colonne 1 NOM : PBIBXXD025
2 CONDITION IN
3 CONDITION OUT
Est-ce possible ? J'ai un fichier contenant 10000 lignes auquels j'aimerai appliquer cette règle.
Un grand merci d'avance.
Cdt.Rahon
Oui toujours dans ce format là. Mais il faut ajouter à chaque fin de ligne une barre dièsé.
########################################
Ce dernier peut servir de séparateur ?
Cdt, rahon
########################################
Ce dernier peut servir de séparateur ?
Cdt, rahon
On peut voir un exemple concret de ce que tu veux réellement en sortie à partir de ton exemple ?
En entrée tu as ça :
Et en sortie tu veux quoi exactement ???
En entrée tu as ça :
-- PBIBXXD025 --- CONDITION IN START DAILY PBIBXXD000 PBILXXD010 CONDITION OUT PBIBXXD030 -- PBIBXXD026 --- CONDITION IN START DAILY PBIBXXD000 PBILXXD010 CONDITION OUT PBIBXXD030
Et en sortie tu veux quoi exactement ???
Voici ce que je veux
-- PBIBXXD025 --- CONDITION IN CONDITION OUT
START DAILY PBIBXXD000 PBIBXXD030
PBILXXD010
-- PBIBXXD025 --- CONDITION IN CONDITION OUT
START DAILY PBIBXXD000 PBIBXXD030
PBILXXD010
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Zut je veux 3 colonnes.
JOB COND IN COND OUT
- XXXXX - avec les cond in avec les cond out
JOB COND IN COND OUT
- XXXXX - avec les cond in avec les cond out
$ sed ':z;N;$!bz;s/\n/ /g;s/CON/\t&/g;s/ \(--- [A-Z]\)/\n\1/g;s/\s\+;/\t/g' plop --- PBIBXXD025 --- CONDITION IN START DAILY PBIBXXD000 PBILXXD010 CONDITION OUT PBIBXXD030 --- PBIBXXD026 --- CONDITION IN START DAILY PBIBXXD001 PBILXXD010 CONDITION OUT PBIBXXD031 --- PBIBXXD027 --- CONDITION IN START DAILY PBIBXXD002 PBILXXD010 CONDITION OUT PBIBXXD032 $
A mon avis je dois mal appliqué la commande.
sed ':z;N;$!bz;s/\n/ /g;s/CON/\t&/g;s/ \(--- [A-Z]\)/\n\1/s/\s\+;/\t/g' ALL_COND_IN_OUT.lst (fichier regroupant toutes les données).
<
sed: The label :z;N;$!bz;s/\n/ /g;s/CON/\t&/g;s/ \(--- [A-Z]\)/\n\1/g;s/\s\+;/\t/g is greater than eight characters.
sed ':z;N;$!bz;s/\n/ /g;s/CON/\t&/g;s/ \(--- [A-Z]\)/\n\1/s/\s\+;/\t/g' ALL_COND_IN_OUT.lst (fichier regroupant toutes les données).
<
sed: The label :z;N;$!bz;s/\n/ /g;s/CON/\t&/g;s/ \(--- [A-Z]\)/\n\1/g;s/\s\+;/\t/g is greater than eight characters.
Pour etre plus clair voila comment sont les données dans le fichiers .
--- 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 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
########################################################################
Bon c'est pas grave.
Crées un fichier avec ce contenu :
Et appelles-le comme suit :
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
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.
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.
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
Je te dirais si cela a fonctionne encore merci pour ton aide.
Cdt, Rahon
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
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
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) :
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
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
$ 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
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
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
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....
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....