Variabile XFILEBASE64 ha contenuto codificato in base 64 e voglio sostituire una stringa con quel contenuto di base64.Come passare il contenuto dell'ecode di base64 su sed?
Sicuramente abbastanza base64 è pieno di caratteri speciali, e ho provato $ '\ 001' come delimitatore, ricevendo comunque il messaggio di errore. Eventuali suggerimenti?
XFILEBASE64=`cat ./sample.xml | base64`
cat ./template.xml | sed "s$'\001'<Doc>###%DOCDATA%###<\/Doc>$'\001'<Doc>${XFILEBASE64}<\/Doc>$'\001'g"
> sed: -e expression #1, char 256: unterminated `s' command
EDIT: Sembra che problema non ha nulla a che fare con sed, deve essere nascosta nelle operazioni di base64.
sample.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a>testsdfasdfasdfasfasdfdasfdads</a>
Per riprodurre il problema:
foo=`base64 ./sample.xml`
echo $foo | base64 --decode
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<base64: invalid input
quale sistema operativo e infine LANG? Unix sta trattando in modo diverso a seconda del valore di OS e LANG e sed è puramente testo (ASCII se ricordo bene), quindi questi caratteri tendono ad essere interpretati come EOL. Inoltre, non tutte le sed consentono la codifica hexa (octal sembra più disponibile) – NeronLeVelu
OS è RHEL 7.1 e LANG en_US.UTF-8, non penso che Hex sia un problema se lascio delimitatore hexa e sostituisco il contenuto variabile con una stringa statica, va bene. – user52028778
right, replying capisco più chiaramente che questo non è un problema di char speciale all'interno di file di variabili o di template, e tu includi semplicemente l'esagono come separatore – NeronLeVelu