在不同的Linux机器上使用相同的shell命令会产生不同的输出

在不同的Linux机器上使用相同的shell命令会产生不同的输出,linux,shell,Linux,Shell,我在两台不同的Linux机器上有一个shell脚本,它运行以下命令: sed 's/ïí/`/g' $inputfile > $outputfile 它应该获取一个输入文本文件,并生成一个输出文件,其中所有ïí(ASC139+ASC161)的实例都替换为反勾号字符。该命令在server1上运行良好,但在server2上没有任何作用。这可能是什么原因和可能的解决办法 下面是关于每台服务器的一些详细信息 服务器1 ***run cmd 'uname -a'*** Linux <ser

我在两台不同的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
***运行cmd'uname-a'***
Linux 3.10.0-229.el7.x86_64#1 SMP周四1月29日18:37:38 EST 2015 x86_64 x86_64 x86_64 GNU/Linux
***运行cmd'lsb_release-a'***
LSB版本::core-4.1-amd64:core-4.1-noarch
分发服务器ID:RedHatEnterpriseServer
描述:Red Hat Enterprise Linux Server 7.1版(Maipo)
发布:7.1
代号:米埔
服务器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
***运行cmd'uname-a'***
Linux 2.6.32-431.el6.x86#u 64#1 SMP Sun 11月10日22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
***运行cmd'lsb_release-a'***
LSB版本::base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch
分发服务器ID:RedHatEnterpriseServer
描述:Red Hat Enterprise Linux Server 6.5版(圣地亚哥)
发行:6.5
代号:圣地亚哥

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

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

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

通过查看环境变量
LC\u CTYPE
LC\u ALL
来检查这一点。确保脚本的编码与数据编码匹配。您可以使用以下命令检查用于非ASCII字符的实际字节值:

od -bc script
od -bc data
如果它们对ïí不使用相同的字节或字节序列,这就是它不起作用的原因

您可能还希望比较

locale

这两个服务器都会产生。

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

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

通过查看环境变量
LC\u CTYPE
LC\u ALL
来检查这一点。确保脚本的编码与数据编码匹配。您可以使用以下命令检查用于非ASCII字符的实际字节值:

od -bc script
od -bc data
如果它们对ïí不使用相同的字节或字节序列,这就是它不起作用的原因

您可能还希望比较

locale
这两台服务器都生产