Script perl ou cmd linux pour transformation de format de texte
doojainfo2013
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je veux savoir s'il y a des commande linux pour transformer un texte d'un format à un autre format précisé comme par exemple le fichier contient le texte:
[P1 m1/NNP m2/NNP m3/NNP] [P2 m4/NN m5/JJ m6/JJ] [P3 m7/VBN_MS3] [P4 m8/NN] [P5 m9/NNCD] [P6 m10/NN] [P7 m11/IN m12/NN_FS m13/NNP] ./PUNC .......
transformer au fichier de format suivant:
m1 NNP B-P1
m2 NNP I-P1
m3 NNP I-P1
m4 NN B-P2
m5 JJ I-P2
m6 JJ I-P2
m7 VBN_MS3 B-P3
m8 NN B-P4
m9 NNCD B-P5
m10 NN B-P6
m11 IN B-P7
m12 NN_FS I-P7
m13 NNP I-P7
. PUNC O
. . .
. . .
. . .
SVP qlq me aide
je veux savoir s'il y a des commande linux pour transformer un texte d'un format à un autre format précisé comme par exemple le fichier contient le texte:
[P1 m1/NNP m2/NNP m3/NNP] [P2 m4/NN m5/JJ m6/JJ] [P3 m7/VBN_MS3] [P4 m8/NN] [P5 m9/NNCD] [P6 m10/NN] [P7 m11/IN m12/NN_FS m13/NNP] ./PUNC .......
transformer au fichier de format suivant:
m1 NNP B-P1
m2 NNP I-P1
m3 NNP I-P1
m4 NN B-P2
m5 JJ I-P2
m6 JJ I-P2
m7 VBN_MS3 B-P3
m8 NN B-P4
m9 NNCD B-P5
m10 NN B-P6
m11 IN B-P7
m12 NN_FS I-P7
m13 NNP I-P7
. PUNC O
. . .
. . .
. . .
SVP qlq me aide
A voir également:
- Script perl ou cmd linux pour transformation de format de texte
- Format epub - Guide
- Format factory - Télécharger - Conversion & Codecs
- Cmd - Guide
- Hp usb disk storage format tool - Télécharger - Stockage
- Format apfs - Guide
6 réponses
voici
BEGIN {RS="^[[]|[]] [[]| [^A-Z]/|\n|[]]"} on definit comme séparateur d'enregistrement : ^[ ou ]<espace>[ ou <espace>[pas de lettre] ou \n ou ] donc $0=P1 m1/NNP m2/NNP m3/NNP
NF>1 pour tout enreg. avec 2 champs ou plus
{for(n=2; n<=NF;) pour chaque champ (sauf le 1er) du genre m1/NNP
{split($n, a, "/") on sépare avant et après le /
n++>2? c="I": c="B"; si c'est le 2ème champ on imprimera B sinon I
print a[1], a[2], c "-" $1}} on imprime
NF==1 {print ".", $0, "O"} si il n'y a qu'un champ (/PUNC) on imprime
BEGIN {RS="^[[]|[]] [[]| [^A-Z]/|\n|[]]"} on definit comme séparateur d'enregistrement : ^[ ou ]<espace>[ ou <espace>[pas de lettre] ou \n ou ] donc $0=P1 m1/NNP m2/NNP m3/NNP
NF>1 pour tout enreg. avec 2 champs ou plus
{for(n=2; n<=NF;) pour chaque champ (sauf le 1er) du genre m1/NNP
{split($n, a, "/") on sépare avant et après le /
n++>2? c="I": c="B"; si c'est le 2ème champ on imprimera B sinon I
print a[1], a[2], c "-" $1}} on imprime
NF==1 {print ".", $0, "O"} si il n'y a qu'un champ (/PUNC) on imprime
hello
$ awk -v RS="[][]" '/P[0-9]/ {for(n=2; n<=NF;){split($n, a, "/"); n++>2? c="I": c="B"; print a[1], a[2], c "-" $1}; next} NF' fichier
m1 NNP B-P1
m2 NNP I-P1
m3 NNP I-P1
m4 NN B-P2
m5 JJ I-P2
m6 JJ I-P2
m7 VBN_MS3 B-P3
m8 NN B-P4
m9 NNCD B-P5
m10 NN B-P6
m11 IN B-P7
m12 NN_FS I-P7
m13 NNP I-P7
./PUNC
$
Merci
Mais c'est quoi NF? tu peux m'expliquer un peut tous ta ligne de commande ... car je suis débutant.
pour les points " ./PUNC" lorsque on les trouve dans le fichier on veux transférer en:
. PUNC O
Mais c'est quoi NF? tu peux m'expliquer un peut tous ta ligne de commande ... car je suis débutant.
pour les points " ./PUNC" lorsque on les trouve dans le fichier on veux transférer en:
. PUNC O
il n'y a qu'une ligne ./PUNC ou plusieurs ?
NF tout seul veut dire:
NF tout seul veut dire:
if(NF != 0)print $0si le nombre de champs (NF) n'est pas nul, donc si la ligne n'est pas vide, on l'imprime
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
comme ça ?
$ cat fichier
[P1 m1/NNP m2/NNP m3/NNP] [P2 m4/NN m5/JJ m6/JJ] [P3 m7/VBN_MS3] [P4 m8/NN] [P5 m9/NNCD] [P6 m10/NN] [P7 m11/IN m12/NN_FS m13/NNP] ./PUNC ;/PUNC (/PUNC :/PUNC
$ awk 'BEGIN {RS="^[[]|[]] [[]| [^A-Z]/"} NF>1 {for(n=2; n<=NF;){split($n, a, "/"); n++>2? c="I": c="B"; print a[1], a[2], c "-" $1}} NF==1 {sub("\n", ""); print ".", $0, "O"}' fichier
m1 NNP B-P1
m2 NNP I-P1
m3 NNP I-P1
m4 NN B-P2
m5 JJ I-P2
m6 JJ I-P2
m7 VBN_MS3 B-P3
m8 NN B-P4
m9 NNCD B-P5
m10 NN B-P6
m11 IN B-P7
m12 NN_FS I-P7
m13 NNP] I-P7
. PUNC O
. PUNC O
. PUNC O
. PUNC O
$