用shell处理二进制文件(转)

用shell处理二进制文件(转)[@more@]

我以前写过一个shell script,其中有一部分是转换十六进制到十进制。道理差不多,应该和这个有点象,是Solaris环境下的。 用来转换 Solaris下的Sybase interfaces file 为windows环境下的Sybase的sql.ini。

[code:1:8fab55483b]

#!/bin/sh

# This is a script to convert the interfaces file of sybase server to sql.ini of

sybase client on PC.

# Illusion/ICIL

# Intialize sql.ini

(

echo ";; Sybase Interfaces file"

echo ";;"

echo ";; []"

echo ";; =,"

echo ";;"

echo ";; Examples:"

echo ";; [JUPITER]"

echo ";; QUERY=NLMSNMP,JUPITERpipesybasequery"

echo ";; WIN3_QUERY=WNLNMP,JUPITERpipesybasequery"

echo ";; "

)>/tmp/sql

# May ignore the backup server for sybase

servers=`grep -i '^[a-z]' /opt/sybase11/interfaces | sed '/_BACKUP/d'`

for server in ${servers}; do

echo "Converting ${server} info ..."

server_info=`grep -A 2 ^"${server}"$ /opt/sybase11/interfaces`

master_info=`echo "${server_info}" | grep "master" | awk '{ print $5 }'`

# May use a perl script to convert the number of IP too.

master_ip1=`echo "${master_info}" | cut -c11-12`

master_ip1=`echo "${master_ip1}" | tr '[a-z]' '[A-Z]'`

master_ip1=`echo "obase=10; ibase=16; ${master_ip1}" | bc`

master_ip2=`echo "${master_info}" | cut -c13-14`

master_ip2=`echo "${master_ip2}" | tr '[a-z]' '[A-Z]'`

master_ip2=`echo "obase=10; ibase=16; ${master_ip2}" | bc`

master_ip3=`echo "${master_info}" | cut -c15-16`

master_ip3=`echo "${master_ip3}" | tr '[a-z]' '[A-Z]'`

master_ip3=`echo "obase=10; ibase=16; ${master_ip3}" | bc`

master_ip4=`echo "${master_info}" | cut -c17-18`

master_ip4=`echo "${master_ip4}" | tr '[a-z]' '[A-Z]'`

master_ip4=`echo "obase=10; ibase=16; ${master_ip4}" | bc`

master_ip=`echo "${master_ip1}.${master_ip2}.${master_ip3}.${master_ip4}

`

master_port=`echo "${master_info}" | cut -c7-10`

master_port=`echo "${master_port}" | tr '[a-z]' '[A-Z]'`

master_port=`echo "obase=10; ibase=16; ${master_port}" | bc`

# add the server info to sql.ini

(

echo "[${server}]"

echo "master=NLWNSCK,${master_ip},${master_port}"

echo "query=NLWNSCK,${master_ip},${master_port} "

)>>/tmp/sql

done

# convert to PC filesystem

unix2dos /tmp/sql > /tmp/sql.ini[/code:1:8fab55483b

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-944837/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-944837/

你可能感兴趣的:(用shell处理二进制文件(转))