2017-10-20 31 views
0

Je veux convertir un fichier txt en html en utilisant sed. Cependant, pour correspondre à la syntaxe html, j'ai besoin d'inclure des balises (et ainsi de < et>). Quand j'utilise ces caractères dans mon expression sed, sed pense que je spécifie le fichier source ou cible, même si je leur échappe avec. Je reçois toujours le message "Le système ne trouve pas le fichier spécifié".Comment utiliser unicode dans sed?

Comment puis-je éviter cela? Puis-je utiliser le numéro Unicode?

Fichier source: input.txt

Contenu:

Hello world! 

fichier cible souhaité: output.htm

Contenu:

<html><body>Hello world!</body></html> 

commande sed qui ne fonctionne pas :

sed -r 's#(.*)#\<html\>\<body\>\1\<\/body\>\<\/html\>#g' <input.txt >output.htm 
+0

pour ce cas simple, vous n'avez pas besoin sed – RomanPerekhrest

+1

Eh bien, [ 'sed -r de » la # # \ 1 n g'' (*).] (Https: // ideone. com/dpMnsC) fonctionne. –

Répondre

2

Avec la fonction de l » printfshell simples:

printf "<html><body>%s</body></html>\n" "$(< input.txt)" > output.htm 

Les output.htm contenus:

<html><body>Hello world!</body></html> 

Si vous avez besoin approche sed (par certaines fins) :

echo -e "<html><body>\n</body></html>" | sed '1 r input.txt' > output.htm 
  • 1 r input.txt - commande r ici va lire et insérer le contenu de input.txt après la ligne 1 st du contenu html passé (lignes délimitées par \n)

Les output.htm contenu:

<html><body> 
Hello world! 
</body></html> 
0

Vous pourriez le garder plus sim comme suit.

echo "<html><body>" && cat Input_file && echo "</body></html>" 

La sortie sera la suivante.

<html><body> 
Hello world! 
</body></html>