如何在sed中使用unicode?

问题描述:

我想使用sed将txt文件转换为html。如何在sed中使用unicode?

但是,要匹配html语法,我需要包含标签(因此也包括<和>)。当我在sed表达式中使用这些字符时,sed认为我指定了源文件或目标文件,即使我将它们转义。我不断收到消息“系统找不到指定的文件”。

我该如何避免这种情况?我可以以某种方式使用unicode号码吗?

源文件:input.txt中

内容:

Hello world! 

期望中的目标文件:output.htm

内容:

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

sed命令不工作:

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

这种简单的情况下你不需要的sed – RomanPerekhrest

+1

嘛,['sed的-r的##

\ 1#g''(*)(https://开头ideone。 com/dpMnsC)的作品。 –

通过简单shellprintf功能:

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

output.htm内容:

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

如果您仍然需要sed方法(通过某些目的) :

echo -e "<html><body>\n</body></html>" | sed '1 r input.txt' > output.htm 
  • 1 r input.txt - 在这里r命令将读取并通过HTML内容的1第一行(行由\n分隔)

output.htm内容后插入的input.txt内容:

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

你可以保持更多的SIM卡如下所示。

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

输出如下。

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