如何删除文件中的符号?相当于“”

如何删除文件中的符号?相当于“”

我在 bash 中从 PDF 文件复制文本 -vi 我得到如下行:

echo <93>The Hypotenuse is $hypotenuse<94>

我尝试vi通过以下方式改变它:

s/<93>/"/g

但:

E486: Pattern not found: <93>

并通过sed

sed 's/'`echo "\093"`'/"/g' par.sh

和:

sed 's/'`echo "\094"`'/"/g' par.sh

和:

sed 's/\<93\>/\"/g' aa.sh
echo В“The Hypotenuse is $hypotenuseВ”

你能告诉我应该用什么吗?

答案1

您需要输入 2 个特殊字符中每一个的按键序列,而不是其显示的 ASCII 字符(如果将光标放在它们上,您将看到整个 ASCII 序列突出显示):

  • Ctrl+ v, x, 9, 3代替<93>
  • Ctrl+ v, x, 9, 4代替<94>

所以搜索命令看起来像这样:

:%s / Ctrl+ v, x, 9, 3/"/g

答案2

通过sed,您可以使用文字字符:

sed -e 's/”/"/g' -e 's/“/"/g' file

perl与 Unicode 代码点一起使用:

perl -CSD -pe 's/\x{201C}|\x{201D}/"/g' file

答案3

这是另一种方式,但使用 perl。

perl -i.bak -pe 's/[^[:ascii:]]//g' file
  • -i 标志创建原始文件的备份。

答案4

在 StackOverflow 中发现了类似的问题,这个解决方案有效:

iconv -f cp1252 -t utf8 输入文件.csv > 输出文件.csv

简短说明 - 字符采用 cp1252 编码,您可以将其转换为 utf8。

相关内容