how can I use linux command sed to process Little-

2019-04-10 05:19发布

问题:

I am working on an application about windows rdp. Now I get a problem when I try to use the sed command to replace the string of IP address directly in the rdp file. But after executing this command, the origin rdp file is garbled.

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

I find that the file's format is Little-endian UTF-16 Unicode.

Can I still use the sed command to replace the text in the files correctly? Or other method to process this problem?

回答1:

If the file is UTF-16 encoded text (as RDP is), and that is not your current encoding (it's not likely to be on Linux) then you can pre- and post-process the file with iconv. For example:

iconv -f utf-16 -t us-ascii <rdpzhitong.rdp |
 sed 's/original/modified/' |
 iconv -f us-ascii -t utf-16 >rdpzhitong.rdp.modified


回答2:

if you can cat the file, then you may use sed. no harm in trying before you ask the question.

if the check-free-ip.to.rdpzhitong.rdp file has any text, you may want to do this:

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

also, a little advice. try without the -i switch, until you know it's working.