用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/,如需轉載,請註明出處,不然將追究法律責任。 sql

轉載於:http://blog.itpub.net/8225414/viewspace-944837/shell