如何在sed中使用unicode?

时间:2017-10-20 07:53:54

标签: regex bash unicode sed

我想使用sed将txt文件转换为html。

但是,为了匹配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

2 个答案:

答案 0 :(得分:2)

使用简单的shell&#39; printf 功能:

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内容的input.txt st行之后插入1的内容(由{{1}分隔的行})

\n内容:

output.htm

答案 1 :(得分:0)

您可以按照以下方式更简单。

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

输出如下。

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