Script perl ou cmd linux pour transformation de format de texte
Fermé
doojainfo2013
Messages postés
4
Date d'inscription
jeudi 31 octobre 2013
Statut
Membre
Dernière intervention
17 janvier 2014
-
Modifié par doojainfo2013 le 31/10/2013 à 19:42
dubcek Messages postés 18784 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 avril 2025 - 19 nov. 2013 à 08:51
dubcek Messages postés 18784 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 avril 2025 - 19 nov. 2013 à 08:51
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
- Script vidéo youtube - Guide
- Format apfs - Guide
6 réponses
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
Modifié par dubcek le 19/11/2013 à 08:52
Modifié par dubcek le 19/11/2013 à 08:52
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
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
1 nov. 2013 à 10:46
1 nov. 2013 à 10:46
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
$
doojainfo2013
Messages postés
4
Date d'inscription
jeudi 31 octobre 2013
Statut
Membre
Dernière intervention
17 janvier 2014
3 nov. 2013 à 16:52
3 nov. 2013 à 16:52
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
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
Modifié par dubcek le 4/11/2013 à 09:22
Modifié par dubcek le 4/11/2013 à 09:22
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
doojainfo2013
Messages postés
4
Date d'inscription
jeudi 31 octobre 2013
Statut
Membre
Dernière intervention
17 janvier 2014
4 nov. 2013 à 11:42
4 nov. 2013 à 11:42
Il y a plusieurs ./PUNC d'autres catégories ;/PUNC (/PUNC :/PUNC .....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
4 nov. 2013 à 12:10
4 nov. 2013 à 12:10
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
$
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
4 nov. 2013 à 16:12
4 nov. 2013 à 16:12
correction
awk 'BEGIN {RS="^[[]|[]] [[]| [^A-Z]/|\n|[]]"} 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 {print ".", $0, "O"}' fichieril restait un ] là :
m13 NNP] I-P7