#1 Le 23/07/2016, à 00:36
- Swiss_Knight
☑ awk échapper les accolades et les crochets ?
Salut,
je teste un peu awk mais je butte sur des trucs vraiment bêtes : je n'arrive pas à lui faire print des accolades ouvrantes et fermantes ni des crochets ... j'ai essayé ça pourtant : \{ \} \[ \] mais rien n'y fait...
:S
EDIT : bon ce n'est pas grave, avec sed ça marche beaucoup beaucoup mieux ce genre de caractères :-)
Dernière modification par Swiss_Knight (Le 23/07/2016, à 21:53)
xuniL
Hors ligne
#2 Le 23/07/2016, à 07:28
- credenhill
Re : ☑ awk échapper les accolades et les crochets ?
hello
de quelle manière ?
$ awk 'BEGIN { print "{}{}[][]"}'
{}{}[][]
Hors ligne
#3 Le 23/07/2016, à 11:45
- Swiss_Knight
Re : ☑ awk échapper les accolades et les crochets ?
Hello,
j'ai effacé ce que j'avais fait, mais en gros je devais traduire un simple tableau avec une ligne d’entête dans un objet JSON, donc c'est bourré d'accolades, crochets, deux-points et guillemets.
Je ne sais pas ce qui ennuyait précisément dans le tas... mais ça ne voulait pas.
Ça devait ressembler à ça, grosso modo :
awk -F " " ' BEGIN { print {
"type": "FeatureCollection",
"baseparam": { "type": "name", "properties": { "name": "ref:os:define:baseparam:code:8080" } },\n #"features": [\n
}
}
NR <= 1 {next}
$0 { print {
"type": "Feature", "properties": { "Density": $4, "Fx": $5, "Fy": $6, "Fz": $7 },
"objetproperties": { "type": "Type01", "cartesianT": [ $1, $2, $3 ] } },\n
}
' "${WORKINGDIR}${FILEIN}" > "${WORKINGDIR}${FILEOUT}";
Et le tableau de base à ça :
//x y t Density Fx Fy Fz
2018.26229858 1199.05871582 61.19189453 8.496380 -0.859459 0.135245 -0.492989
2018.89694214 1203.62719727 61.19189453 8.477986 -0.786923 0.379727 -0.486374
2020.11767578 1048.30029297 65.76031494 8.488781 -0.489955 -0.631386 0.601079
...
..
.
Dernière modification par Swiss_Knight (Le 23/07/2016, à 11:52)
xuniL
Hors ligne
#4 Le 23/07/2016, à 12:18
- credenhill
Re : ☑ awk échapper les accolades et les crochets ?
l'accolade, les : sont en dehors des "
BEGIN { print {
"type": "FeatureCollection",
"baseparam": { "type": "name", "properties": { "name": "re....
Hors ligne
#5 Le 23/07/2016, à 13:19
- Swiss_Knight
Re : ☑ awk échapper les accolades et les crochets ?
Je crains ne pas avoir compris la réponse là.
En fait, tout ce qui est dans les accolades principales d'awk ( celles qui commencent à chaque fois avant les print ) ça doit sortir tel quel dans le fichier en sortie.
Chaque caractère doit y être, guillemets compris.
Ils ne doivent pas du tout être interprétés comme caractères spéciaux là-dedans.
Du moins c'est ce que je souhaite.
xuniL
Hors ligne
#6 Le 23/07/2016, à 14:07
- credenhill
Re : ☑ awk échapper les accolades et les crochets ?
montre le texte qui doit être affiché
edit : comme ça ?
{ "type": "FeatureCollection", "baseparam": { "type": "name", "properties": { "name": "ref:os:define:baseparam:code:8080" } },
#"features": [
}
{ "type": "Feature", "properties": { "Density":8.496380 "Fx":-0.859459 "Fy":0.135245 "Fz":-0.492989}, "objetproperties": { "type": "Type01", "cartesianT": [2018.26229858 1199.05871582 61.19189453] } },
}
{ "type": "Feature", "properties": { "Density":8.477986 "Fx":-0.786923 "Fy":0.379727 "Fz":-0.486374}, "objetproperties": { "type": "Type01", "cartesianT": [2018.89694214 1203.62719727 61.19189453] } },
}
{ "type": "Feature", "properties": { "Density":8.488781 "Fx":-0.489955 "Fy":-0.631386 "Fz":0.601079}, "objetproperties": { "type": "Type01", "cartesianT": [2020.11767578 1048.30029297 65.76031494] } },
}
Dernière modification par credenhill (Le 23/07/2016, à 14:31)
Hors ligne
#7 Le 23/07/2016, à 17:09
- Swiss_Knight
Re : ☑ awk échapper les accolades et les crochets ?
sans le dièse en début de deuxième ligne c'est ça oui.
(et sans la toute dernière virgule du fichier mais ça j'en fais mon affaire)
en sortie de console j'ai à peu près tout le code qui s'affiche avec des "^ syntax error" le premier étant sur la première accolade après le print :
awk: cmd. line:1: BEGIN { print {
awk: cmd. line:1: ^ syntax error
Comme ceci.
Dernière modification par Swiss_Knight (Le 23/07/2016, à 17:12)
xuniL
Hors ligne
#8 Le 23/07/2016, à 19:15
- LeoMajor
Re : ☑ awk échapper les accolades et les crochets ?
bonjour,
clear; awk 'BEGIN { printf("%s\n","{ \"type\": \"FeatureCollection\", \"baseparam\": { \"type\": \"name\", \"properties\": { \"name\": \"ref:os:define:baseparam:code:8080\" } }, \n}") }; {printf("%s\n","{\"type\": \"Feature\", \"properties\": { \"Density\":"$4" \"Fx\":"$5" \"Fy\":"$6" \"Fz\":"$7"}, \"objetproperties\": { \"type\": \"Type01\", \"cartesianT\": ["$1" "$2" "$3"] } }, \n}") }' /tmp/test
cela donne avec ton tableau du post #3 en /tmp/test
{ "type": "FeatureCollection", "baseparam": { "type": "name", "properties": { "name": "ref:os:define:baseparam:code:8080" } },
}
{"type": "Feature", "properties": { "Density":8.496380 "Fx":-0.859459 "Fy":0.135245 "Fz":-0.492989}, "objetproperties": { "type": "Type01", "cartesianT": [2018.26229858 1199.05871582 61.19189453] } },
}
{"type": "Feature", "properties": { "Density":8.477986 "Fx":-0.786923 "Fy":0.379727 "Fz":-0.486374}, "objetproperties": { "type": "Type01", "cartesianT": [2018.89694214 1203.62719727 61.19189453] } },
}
{"type": "Feature", "properties": { "Density":8.488781 "Fx":-0.489955 "Fy":-0.631386 "Fz":0.601079}, "objetproperties": { "type": "Type01", "cartesianT": [2020.11767578 1048.30029297 65.76031494] } },
}
Hors ligne
#9 Le 23/07/2016, à 21:20
- Swiss_Knight
Re : ☑ awk échapper les accolades et les crochets ?
Merci, je vais tester ça. Ça fonctionne bien!
C'était donc les guillemets qu'il fallait échapper... Je me sens bien niais là.
Petite question, que signifie le %s en début de print ?
> Je viens de voir que c'était pas un print justement... mais un printf du coup je comprends.
Merci.
Dernière modification par Swiss_Knight (Le 23/07/2016, à 21:56)
xuniL
Hors ligne