我希望有人可以帮助我或为我指明正确的方向。我现在正在努力寻找两周。
事情是这样的,我在 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
应该有效,您也确认这是解决方案。