gpt4 book ai didi

linux - 不同 Linux 机器上的相同 shell 命令会产生不同的输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:55 25 4
gpt4 key购买 nike

我在两台不同的 Linux 机器上有一个 shell 脚本,它运行以下命令:

sed 's/ïí/`/g' $inputfile > $outputfile

它应该获取一个输入文本文件,并生成一个输出文件,其中 ïí (ASC139 + ASC161) 的所有实例都替换为反引号字符。该命令在 server1 上运行良好,但在 server2 上没有任何作用。可能是什么原因和可能的解决方法?

这里是关于每台服务器的一些详细信息。

服务器1

***run cmd 'uname -a'*** 
Linux <servername> 3.10.0-229.el7.x86_64 #1 SMP Thu Jan 29 18:37:38 EST 2015 x86_64 x86_64 x86_64 GNU/Linux

***run cmd 'lsb_release -a'***
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 7.1 (Maipo)
Release: 7.1
Codename: Maipo

服务器2

***run cmd 'uname -a'*** 
Linux <servername> 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

***run cmd 'lsb_release -a'***
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 6.5 (Santiago)
Release: 6.5
Codename: Santiago

如果我遗漏了诊断问题所需的任何重要系统/硬件详细信息,请告诉我。

最佳答案

没有ASCII这样的字符139,因为 ASCII 只有 7 位。

您可能遇到了字符编码问题:脚本是使用编码 A 编写的,它处理的数据文件使用编码 B,例如ASCII 或 ISO8859 与 UTF-8。

通过查看环境变量 LC_CTYPELC_ALL 来检查这一点。确保您的脚本编码与数据编码匹配。您可以使用

检查用于非 ASCII 字符的实际字节值
od -bc script
od -bc data

如果他们不对 ïí 使用相同的字节或字节序列,这就是它不起作用的原因。

您可能还想比较的输出

locale

两个服务器都产生。

关于linux - 不同 Linux 机器上的相同 shell 命令会产生不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43709060/

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