将字符 ý 替换为 \n

将字符 ý 替换为 \n

我希望有人可以帮助我或为我指明正确的方向。我现在正在努力寻找两周。

事情是这样的,我在 Linux (RHEL) 上,我必须将输入流中的字符替换ý为 a 。\n

我尝试过awk '{gsub(/ý/,"\n")}1'sed '$ s/ý/\\n/g'没有成功。也尝试过这个技巧: sed '$ s/ý/\\ /g'没有运气。

我确信我正在寻找正确的字符,因为如果我用 VI 打开文件,我会看到以下内容: DESCRIPTION : test line 1ýtest line 2ýtest line 3

有关信息,ý是 UniVerse 多值分隔符。

任何帮助将不胜感激,非常感谢!

答案1

字符(如 vi 中所示)可能是几种可能的编码(utf8、ASCII、ISO8859-1 等)的转换。因此,当您声明以下内容时,它是不明确的:

...如果我用 VI 打开文件,我会看到以下内容: 描述:测试行 1ý测试行 2ý测试行 3

为了消除歧义,您应该提供文件内容的十六进制(或八进制)转储。命令:

od -tx1c testfile

将给出这样的文件转储。

在转储文件之前我说:

鉴于“UniVerse 多值分隔符”是 252 (0xFC) 或 253 (0xFD),并且您看到的是 ý(ISO-8859-1 字符 0xFD),似乎可以合理地假设 ý 实际上是字节 0xFD (或八进制的 375)。

你确认了在评论中这实际上是文件内的值。

知道这一点后,命令:

sed 's/\xfd/\n/g' testfile

应该有效,您也确认这是解决方案。

相关内容