RRDTool GPRINT mise en forme avec printf

Étroitement liée à cette question: Bash printf préfixe

J'ai le script Bash suivant générer une RRDGraph avec RRDTool.

#!/bin/bash
now=$(date +%s)
now_formatted=$(date +%s | awk '{printf "%s\n", strftime("%c",$1)}' | sed -e 's/:/\\:/g')
# create power graph for last week
/usr/bin/rrdtool graph /var/www/power-week.png \
--start end-7d --width 543 --height 267 --end $now-1min --slope-mode \
--vertical-label "Watts" --lower-limit 0 \
--alt-autoscale-max \
--title "Power: Last week vs. week before" \
--watermark "(©) $(date +%Y) Alyn R. Tiedtke" \
--font WATERMARK:8 \
DEF:Power=/root/currentcost/ccdata.rrd:Power:AVERAGE \
DEF:Power2=/root/currentcost/ccdata.rrd:Power:AVERAGE:end=$now-7d1min:start=end-7d \
VDEF:Last=Power,LAST \
VDEF:First=Power,FIRST \
VDEF:Min=Power,MINIMUM \
VDEF:Peak=Power,MAXIMUM \
VDEF:Average=Power,AVERAGE \
CDEF:kWh=Power,1000,/,168,* \
CDEF:Cost=kWh,.1029,* \
SHIFT:Power2:604800 \
LINE1:Power2#00CF00FF:"Last Week\\n" \
HRULE:Min#58FAF4:"Min    " \
GPRINT:Power:MIN:"%6.2lf%sW" \
COMMENT:"\\n" \
LINE1:Power#005199FF:"Power  " \
AREA:Power#00519933:"" \
GPRINT:Last:"%6.2lf%sW" \
COMMENT:"\\n" \
HRULE:Average#9595FF:"Average" \
GPRINT:Power:AVERAGE:"%6.2lf%sW" \
COMMENT:"\\n" \
HRULE:Peak#ff0000:"Peak   " \
GPRINT:Power:MAX:"%6.2lf%sW" \
COMMENT:"\\n" \
GPRINT:kWh:AVERAGE:"  total    %6.2lfkWh\\n" \
GPRINT:Cost:AVERAGE:"  cost     %6.2lf £\\n" \
GPRINT:Cost:AVERAGE:"$(printf \\" cost %11s\\" £%.2lf | sed 's/\£/\£ /g')\\n" \
COMMENT:" \\n" \
GPRINT:First:"Showing from %c\\n":strftime \
GPRINT:Last:"          to %c\\n":strftime \
COMMENT:"  Created at $now_formatted"

Qui produit un graphique qui ressemble à ceci (notez le leader \ sur la baisse du coût de la ligne dans la légende):-

RRDTool GPRINT mise en forme avec printf

En se concentrant spécifiquement sur la ligne suivante:-

GPRINT:Cost:AVERAGE:"$(printf \\" cost %11s\\" £%.2lf | sed 's/\£/\£ /g')\\n" \

C'est la ligne qui est de l'impression à la baisse des coûts de la ligne dans la légende.

Je suis de passage d'un GPRINT valeur mise en forme de £4.54 à Bash de printf de la fonction rembourré pour 11 places de parking et un cost étiquette préfixé. Je suis alors dans la tuyauterie de ce sed pour ajouter un espace entre les £ et la valeur réelle.

Ce que je veux savoir, c'est pourquoi est échappé \ à venir à travers dans la production? Si je supprime le \\ juste après printf bash se plaint qu'il manque quelque chose.

Comment puis-je supprimer ce \ de venir dans la sortie.

OriginalL'auteur general exception | 2012-07-05