5

我正在开发一个关于 windows rdp 的应用程序。现在当我尝试使用 sed 命令直接替换 rdp 文件中的 IP 地址字符串时遇到问题。但是执行完这个命令后,原来的rdp文件就乱码了。

sed -i "s/address:s:.*/address:s:$(cat check-free-ip.to.rdpzhitong.rdp)/" rdpzhitong.rdp

我发现文件的格式是 Little-endian UTF-16 Unicode。

在此处输入图像描述

我仍然可以使用 sed 命令正确替换文件中的文本吗?或者其他方法来处理这个问题?

4

2 回答 2

14

如果文件是 UTF-16 编码的文本(如RDP一样),并且这不是您当前的编码(不太可能在 Linux 上),那么您可以使用iconv. 例如:

iconv -f utf-16 -t us-ascii <rdpzhitong.rdp |
 sed 's/original/modified/' |
 iconv -f us-ascii -t utf-16 >rdpzhitong.rdp.modified
于 2013-07-22T11:18:03.247 回答
1

如果你可以cat文件,那么你可以使用sed。在你问问题之前尝试没有坏处。

如果check-free-ip.to.rdpzhitong.rdp文件有任何文本,您可能需要这样做:

address=$(sed 1q check-free-ip.to.rdpzhitong.rdp)
sed -i "s/address:s:.*/address:s:$address/" rdpzhitong.rdp

另外,一点建议。尝试不使用 -i 开关,直到您知道它正在工作。

于 2013-07-19T17:09:01.123 回答