如何替换包含" \ u2015"?的字符串?

时间:2016-06-28 08:04:43

标签: linux sed sh

有没有人知道如何在SED命令中替换包含\u2015的字符串,如下例所示?

sed -ie "s/some text \u2015 some more text/new text/" inputFileName

2 个答案:

答案 0 :(得分:1)

你只需要逃避现有的斜杠。以下示例在GNU sed version 4.2.1

中正常工作
$ echo "some text \u2015 some more text" | sed -e "s/some text \\\u2015 some more text/abc/"
$ abc

此外,您不必使用-i标记,根据man页面,该标记仅用于编辑files

-i[SUFFIX], --in-place[=SUFFIX]

    edit  files  in place (makes backup if extension supplied).  The default operation mode is to break symbolic and hard links.  This can be changed with --follow-symlinks and
          --copy.

答案 1 :(得分:-1)

不确定这是否正是您所需要的,但也许您应该查看native2ascii工具来转换此类unicode转义。

通常它会将所有无法在ISO-8859-1中显示的字符替换为unicodes(使用\ u进行转义),但它也支持反向转换。假设您有一些名为“input”的UTF-8文件包含\u00abSome \u2015 string\u00bb,然后执行

native2ascii -encoding UTF-8 -reverse input output

将生成带有«Some ― string»的“输出”文件。