Extraire champs d'un fichier txt
qbert
Messages postés
9
Statut
Membre
-
qbert Messages postés 9 Statut Membre -
qbert Messages postés 9 Statut Membre -
Bonjour
Voilà je cherche a extraire certaines parties d'un fichier texte dans autant de fichier texte de sortie.
Mon fichier texte a une structure répétitive ressemblant a ceci;
$end
$info=juju,
blablabla
blabla
$end
$info=popo,
bliblibli
blilbli
$end
ce que j'aimerais obtenir par rapport a cet exemple c'est
un fichier se nommant juju.txt et contenant
blablabla
blabla
et un autre fichier se nommant popo.txt et contenant
bliblibli
blilbli
Sachant qu'il y aurait environs 2500 fichier a générer, est ce possible???
J'ai fait quelques recherches sur les pipe et grep mais je n'ai pas trouvé de solution pour extraire et importer avec un nom voulu le contenu de ce qu'il y a dans les balises $end, je précise que suis totalement débutant sous unix et que je participe actuellement a un projet de front-end pour jeux d'arcade sous raspberry, le but est de générer des fichiers contenant les infos des jeux pour les afficher individuellement dans l'interface.
Merci
Voilà je cherche a extraire certaines parties d'un fichier texte dans autant de fichier texte de sortie.
Mon fichier texte a une structure répétitive ressemblant a ceci;
$end
$info=juju,
blablabla
blabla
$end
$info=popo,
bliblibli
blilbli
$end
ce que j'aimerais obtenir par rapport a cet exemple c'est
un fichier se nommant juju.txt et contenant
blablabla
blabla
et un autre fichier se nommant popo.txt et contenant
bliblibli
blilbli
Sachant qu'il y aurait environs 2500 fichier a générer, est ce possible???
J'ai fait quelques recherches sur les pipe et grep mais je n'ai pas trouvé de solution pour extraire et importer avec un nom voulu le contenu de ce qu'il y a dans les balises $end, je précise que suis totalement débutant sous unix et que je participe actuellement a un projet de front-end pour jeux d'arcade sous raspberry, le but est de générer des fichiers contenant les infos des jeux pour les afficher individuellement dans l'interface.
Merci
A voir également:
- Extraire champs d'un fichier txt
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Extraire une video youtube - Guide
9 réponses
salut,
voici une ligne en awk
voici une ligne en awk
awk -F'[=,]' 'BEGIN{RS="\\$end"}($2){print gensub("(^\n|\n$)","","g",$3)>$2} tonFichier
Bonjour et merci pour cette réponse.
Alors cela ne fonctionne pas, j'ai une erreur
./test.awk: line 2: $'\r': command not found
./test.awk: line 3: $'history\r': command not found
./test.awk: line 4: $'\r': command not found
history est le nom de fichier.
Bon cela dit je ne connaissais pas la commande Awk, et ses possibilités sont tout a fait adaptées a ce que je veux faire.
Un grand merci déjà pour votre aide et de m'avoir mis sur cette voie, voilà qui je pense va m'aider a résoudre cette situation.
Je vais creuser dans cette direction.
Merci une fois de plus.....
Alors cela ne fonctionne pas, j'ai une erreur
./test.awk: line 2: $'\r': command not found
./test.awk: line 3: $'history\r': command not found
./test.awk: line 4: $'\r': command not found
history est le nom de fichier.
Bon cela dit je ne connaissais pas la commande Awk, et ses possibilités sont tout a fait adaptées a ce que je veux faire.
Un grand merci déjà pour votre aide et de m'avoir mis sur cette voie, voilà qui je pense va m'aider a résoudre cette situation.
Je vais creuser dans cette direction.
Merci une fois de plus.....
hello
le fichier test.awk a été créé sur Windows ?
il contient des ^M en fin de lignes ?
le fichier test.awk a été créé sur Windows ?
il contient des ^M en fin de lignes ?
cat -A test.awk
En effet recréer sous Raspberry, et il n'y a plus de ^M a la fin
Testé avec cat -A test.awk
cela dit:
./test.awk: line 1: syntax error near unexpected token `('
./test.awk: line 1: `awk -F[=,]' 'BEGIN{RS="\\$end"}($2){print gensub("(^\n|\n$)","","g",$3)>$2}'
bon je cherche.......
Testé avec cat -A test.awk
cela dit:
./test.awk: line 1: syntax error near unexpected token `('
./test.awk: line 1: `awk -F[=,]' 'BEGIN{RS="\\$end"}($2){print gensub("(^\n|\n$)","","g",$3)>$2}'
bon je cherche.......
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci
En effet corrigé mais
./test.awk: line 1: unexpected EOF while looking for matching `''
./test.awk: line 3: syntax error: unexpected end of file
En effet corrigé mais
./test.awk: line 1: unexpected EOF while looking for matching `''
./test.awk: line 3: syntax error: unexpected end of file
bon j'ai trouvé d'où venait ce problème; il fallait poser un ' en fin de code.
awk -F'[=,]' 'BEGIN{RS="\\$end"}($2){print gensub("(^\n|\n$)","","g",$3)>$2}'
par contre:
awk: line 2: function gensub never defined
/home/pi/test/history.txt: line 1: $'\r': command not found
/home/pi/test/history.txt: line 2: $'\r': command not found
/home/pi/test/history.txt: line 3: $'\r': command not found
/home/pi/test/history.txt: line 4: $'=juju,\r': command not found
/home/pi/test/history.txt: line 5: $'\r': command not found
/home/pi/test/history.txt: line 6: $'blablabla\r': command not found
/home/pi/test/history.txt: line 7: $'blabla\r': command not found
/home/pi/test/history.txt: line 8: $'\r': command not found
/home/pi/test/history.txt: line 9: $'\r': command not found
/home/pi/test/history.txt: line 10: $'\r': command not found
/home/pi/test/history.txt: line 11: $'\r': command not found
/home/pi/test/history.txt: line 12: $'=popo,\r': command not found
/home/pi/test/history.txt: line 13: $'\r': command not found
/home/pi/test/history.txt: line 14: $'bliblibli\r': command not found
/home/pi/test/history.txt: line 15: $'blilbli\r': command not found
/home/pi/test/history.txt: line 16: $'\r': command not found
j'ai fait un sudo dos2unix
mais pareil................
awk -F'[=,]' 'BEGIN{RS="\\$end"}($2){print gensub("(^\n|\n$)","","g",$3)>$2}'
par contre:
awk: line 2: function gensub never defined
/home/pi/test/history.txt: line 1: $'\r': command not found
/home/pi/test/history.txt: line 2: $'\r': command not found
/home/pi/test/history.txt: line 3: $'\r': command not found
/home/pi/test/history.txt: line 4: $'=juju,\r': command not found
/home/pi/test/history.txt: line 5: $'\r': command not found
/home/pi/test/history.txt: line 6: $'blablabla\r': command not found
/home/pi/test/history.txt: line 7: $'blabla\r': command not found
/home/pi/test/history.txt: line 8: $'\r': command not found
/home/pi/test/history.txt: line 9: $'\r': command not found
/home/pi/test/history.txt: line 10: $'\r': command not found
/home/pi/test/history.txt: line 11: $'\r': command not found
/home/pi/test/history.txt: line 12: $'=popo,\r': command not found
/home/pi/test/history.txt: line 13: $'\r': command not found
/home/pi/test/history.txt: line 14: $'bliblibli\r': command not found
/home/pi/test/history.txt: line 15: $'blilbli\r': command not found
/home/pi/test/history.txt: line 16: $'\r': command not found
j'ai fait un sudo dos2unix
mais pareil................
les
pour
ce serait bien de nous montrer ton script en entier.
\rmontrent que ton fichier est encore au format DOS.
pour
gensub, j'avais trouvé que c'était plus élégant, mais si ta version de
awkne reconnaît pas cette fonction...
awk -F'[=,]' 'BEGIN{RS="\\$end"}($2){gsub("(^\n|\n$)","",$3); print $3>$2}'
ce serait bien de nous montrer ton script en entier.
Tout d'abord merci de porter autant d'intérêt a ma situation.
Alors juste pour information je travaille a distance sur mon raspberry avec vnc, avec une machine sous seven, et je pense que c'est peut être a cause de ça que le script est reconnu comme étant DOS...??....
j'ai beau lui avoir fait un sudo dos2unix , cela ne change rien...
Comme je l'ai dit dans mon premier post je suis totalement débutant dans ce domaine et je commence a me documenter depuis peu.
Donc pour plus de confort je vais installer un système unix sur une autre machine.
Pour gensub en effet j'avais déjà vu sur d'autre tuto que la fonction était généralement nommée gsub.
que me conseillez vous comme système UNIX ??
Concernant le script et bien tous ce que vous m'avais fournis est là, j'ai juste besoin d'un batch pour créer ces fameux fichier, qui seront fournis avec la version finale du Front-end.
http://www.tuxme.net/
Voilà et encore merci.
Alors juste pour information je travaille a distance sur mon raspberry avec vnc, avec une machine sous seven, et je pense que c'est peut être a cause de ça que le script est reconnu comme étant DOS...??....
j'ai beau lui avoir fait un sudo dos2unix , cela ne change rien...
Comme je l'ai dit dans mon premier post je suis totalement débutant dans ce domaine et je commence a me documenter depuis peu.
Donc pour plus de confort je vais installer un système unix sur une autre machine.
Pour gensub en effet j'avais déjà vu sur d'autre tuto que la fonction était généralement nommée gsub.
que me conseillez vous comme système UNIX ??
Concernant le script et bien tous ce que vous m'avais fournis est là, j'ai juste besoin d'un batch pour créer ces fameux fichier, qui seront fournis avec la version finale du Front-end.
http://www.tuxme.net/
Voilà et encore merci.
il n'y a pas que le script à passer à
pour la distribution, je te recommande Mageia.
dos2unix, il faut y passer le fichier à traiter.
gsubet
gensubsont deux fonctions différentes, cette dernière n'étant pas implémentée dans
mawk, qui retourne ce même message «[...]never defined» :(
pour la distribution, je te recommande Mageia.
mageia a l'air bien sympa, je vais test cela dans la semaine.
Pour en revenir a nos moutons, en effet le fichier txt avait besoin d'un dos2unix, et la commande gensub doit être remplacé par gsub, je récupère bien les éléments voulus dans le terminal, mais il me semble que gsub ne connait pas "g"
awk: line 1: syntax error at or near g
/home/pi/test/history.txt: line 4: =juju,: command not found
/home/pi/test/history.txt: line 6: blablabla: command not found
/home/pi/test/history.txt: line 7: blabla: command not found
/home/pi/test/history.txt: line 12: =popo,: command not found
/home/pi/test/history.txt: line 14: bliblibli: command not found
/home/pi/test/history.txt: line 15: blilbli: command not found
Pour en revenir a nos moutons, en effet le fichier txt avait besoin d'un dos2unix, et la commande gensub doit être remplacé par gsub, je récupère bien les éléments voulus dans le terminal, mais il me semble que gsub ne connait pas "g"
awk: line 1: syntax error at or near g
/home/pi/test/history.txt: line 4: =juju,: command not found
/home/pi/test/history.txt: line 6: blablabla: command not found
/home/pi/test/history.txt: line 7: blabla: command not found
/home/pi/test/history.txt: line 12: =popo,: command not found
/home/pi/test/history.txt: line 14: bliblibli: command not found
/home/pi/test/history.txt: line 15: blilbli: command not found
effectivement, ce ne sont pas les mêmes fonctions, et le g n'apparaît plus dans la ligne donnée au #10.
Ha oui en effet je n'avais pas remarqué qu'il y avait plus que la fonction qui avait changé.
par contre cela ne renvoie rien, ni message d'erreur, ni texte dans la terminal.
Bon je pense que l'on va arrêter là, je ne veut pas prendre sur votre temps indéfiniment, surtout que je me suis aperçu que le vrais fichier a traiter n'avait pas la même structure répétitive que l'exemple que j'avais proposé dans mon premier post, les espaces ne sont pas disposés de la même manière...
Je vais plutôt me documenter et travailler dans ce sens là par moi même, cela me permettra, de mieux cerner les possibilités avec awk et d'en comprendre les schémas.
Je tiens une nouvelle fois a vous remercier pour cette aide fort constructive et le temps que vous m'avez accorder.
par contre cela ne renvoie rien, ni message d'erreur, ni texte dans la terminal.
Bon je pense que l'on va arrêter là, je ne veut pas prendre sur votre temps indéfiniment, surtout que je me suis aperçu que le vrais fichier a traiter n'avait pas la même structure répétitive que l'exemple que j'avais proposé dans mon premier post, les espaces ne sont pas disposés de la même manière...
Je vais plutôt me documenter et travailler dans ce sens là par moi même, cela me permettra, de mieux cerner les possibilités avec awk et d'en comprendre les schémas.
Je tiens une nouvelle fois a vous remercier pour cette aide fort constructive et le temps que vous m'avez accorder.