filename2.tex 但我的终端无法识别元音变音,因此将所有 u 替换为 \"u。我知道 tex 有包和其他-6ren">
gpt4 book ai didi

shell - 使用 sed 替换变音符号

转载 作者:行者123 更新时间:2023-12-04 16:17:55 25 4
gpt4 key购买 nike

我尝试了以下方法:

sed -e 's/ü/\\"u/g' filename.tex>filename2.tex

但我的终端无法识别元音变音,因此将所有 u 替换为 \"u。我知道 tex 有包和其他可能解决此问题的包问题,但我目前对 sed 方式感兴趣。

最佳答案

根本问题是 sed、您的语言环境、您的终端、您的 shell 以及您正在操作的文件之间存在复杂的交互。以下是要尝试的事情列表。

  • 如果幸运的话,您的 shell、sed 和您正在处理的文件对于您尝试替换的字符应表示为完全一致。就您而言,您已经尝试过,但失败了。

    sed 's/ü/\\"u/g' filename.tex
  • 如果您只是稍微不那么幸运,其他部分都很好,只是您的 sed 不够现代,无法理解您要替换的字符序列。像您这样的简单 sed 脚本可以简单地传递给 perl,而在字符编码方面,它通常是最新的。

    perl -pe 's/ü/\\"u/g' filename.tex

    如果字符编码是 UTF-8,您可能需要将 -CSD 选项传递给 Perl,和/或表达您希望用某种转义符替换的字符。您可以说 \xfc 表示原始十六进制代码(在 Latin-1 和 Latin-9 中恰好是 ü)或 \x{00fc} 表示 Unicode 字符,甚至是 \N{LATIN SMALL LETTER U with DIAERESIS};但请注意,Unicode 对于该字形有多种表示形式(预组合或分解、标准化或非标准化)。另请参阅http://perldoc.perl.org/perlunicode.html

    (对于就地编辑,也许您还想添加 -i 选项。)

  • 最后,您可能需要分解并简单地找出要替换的字符代码的原始字节。有问题的文件的几行十六进制转储应该会有所帮助。之后,Perl 应该能够应对,但您需要弄清楚如何禁用字符集编码和解码等。如果,比如说,您发现有问题的序列是 0xFF 0x03 那么 perl -pe 's/\xff\x03/\\"u/g' filename.tex 应该可以工作。

关于shell - 使用 sed 替换变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14478325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com