2010-05-11 5 views
1

Je me suis retrouvé avec un énorme littéral de chaîne unique (ne me demandez pas comment) où tout est échappé (surtout), y compris les nouvelles lignes et les guillemets. Le problème est, je veux la chaîne d'origine. La chaîne est énorme donc je ne suis même pas sûr de savoir comment commencer. Voici ce que j'ai:Unescpaing énorme chaîne mono-ligne sur Linux

"This\n is \"nice\",\nain\'t it?" 

Voici ce que je veux:

This 
is "nice", 
ain't it? 

Encore une fois, le problème est que l'autre shell choses sensibles est pas se sont échappés, et que (comme $, ou!) la chaîne est de deux mégaoctets.

+2

Ce n'est pas pour l'épissage de l'ADN, est-il? – Smandoli

Répondre

2

Python one-liner:

open("unescaped.txt", "w").write(eval(open("string.txt").read())) 

Vous devriez avoir python sur la plupart linux installe.

1

Sed est votre copain.

cat huge | sed -e 's/\\n/\ << yes,hit the enter key here, the \ capture the newline 
/g' -e 's/\\"/"/g' -e 's/\\'/'/g' ... > file 
2
string="This\n is \"nice\",\nain\'t it?" 
string=$(printf "$string") 

Ou

string=$(<file.txt) 
string=$(printf "$string") 
+0

Ne fonctionnera pas parce que la chaîne n'est pas échappée shell et est pleine de caractères comme '$' et '!' cela va gâcher l'affectation à une variable. (La première chose que j'ai essayé, au fait). –