Sponsored Content
Full Discussion: ksh : split hex number group
Top Forums Shell Programming and Scripting ksh : split hex number group Post 302974980 by drl on Monday 6th of June 2016 11:56:36 PM
Old 06-07-2016
Hi.

Using brace expansion feature of shell:
Code:
#!/usr/bin/env ksh
#!/usr/bin/env bash

# @(#) s3       Demonstrate brace expansion, base conversion.

LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C

FILE=${1-data1}

p=$( basename $0 ) t1="$Revision: 1.12 $" v=${t1//[!0-9.]/}
[[ $# -gt 0 ]] && [[ "$1" =~ -version ]] &&  { echo "$p (local) $v" ; exit 0 ; }

# Function to convert base-16 to base-10
hex() {
printf "%d\n" "0x$1"
}

pl " Example 1, brace expansion, constants:"
printf '%d,' {2..4} ; printf "\n"

pl " Example 2, variables (bash fails; ksh succeeds):"
lo=3
hi=5
printf '%d,' {$lo..$hi} ; printf "\n"

pl " Example 3, variables, but with eval:"
eval "printf '%d,' {$lo..$hi}" ; printf "\n"

pl " Example 4, hex values in variables, remove final comma:"
lo=a0
hi=b0
eval "printf '%x,' {$(hex $lo)..$(hex $hi)}" | sed '$s/,$/\n/'

pl " Example 5, hex values in variables, arithmetic to eliminate comma:"
lo=a0
hi=b0
eval "printf '%x,' {$(hex $lo)..$(($(hex $hi)-1))}" ; printf "%x\n" $(hex $hi)

pl " Example 6, read from file, create sequence:"
IFS=":" read lo hi < $FILE
pe " Data:"
printf " lo = %s, hi = %s\n" $lo $hi
eval "printf '%x,' {$(hex $lo)..$(($(hex $hi)-1))}" ; printf "%x\n" $(hex $hi)

exit 0

producing:
Code:
$ ./s3

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution        : Debian 8.4 (jessie) 
bash GNU bash 4.3.30

-----
 Example 1, brace expansion, constants:
2,3,4,

-----
 Example 2, variables (bash fails; ksh succeeds):
3,4,5,

-----
 Example 3, variables, but with eval:
3,4,5,

-----
 Example 4, hex values in variables, remove final comma:
a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,aa,ab,ac,ad,ae,af,b0

-----
 Example 5, hex values in variables, arithmetic to eliminate comma:
a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,aa,ab,ac,ad,ae,af,b0

-----
 Example 6, read from file, create sequence:
 Data:
 lo = 4D40, hi = 4D42
4d40,4d41,4d42

See man pages, Google for details.

Best wishes ... cheers, drl

Last edited by drl; 06-07-2016 at 01:08 AM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh and hex numbers

typeset -i A=16#0 typeset -u A=$a y=${A#16#} This converted $a to hex and stored it in y. Can someone walk me through how this was done? thanks (2 Replies)
Discussion started by: JamesByars
2 Replies

2. UNIX for Advanced & Expert Users

retrieving all group names with a given group number

hi, which Unix/C function can i use to retrieve all group names with a particular group id? The following C code prints out the group id number of a particular group name: ------------------------------------------------------------------------ #include <stdio.h> #include <grp.h> int... (3 Replies)
Discussion started by: Andrewkl
3 Replies

3. Shell Programming and Scripting

incremental addition of hex decimal number in one field

Hi I want to incremental add hex decimal number to a particula field in file eg: addr =123 dept1=0 addr = 345 dept2 =1 addr2 = 124 dept3 =2 . . . . . . addr3 =567 dept15 =f Is there any command which add... (8 Replies)
Discussion started by: diddi_linux
8 Replies

4. Shell Programming and Scripting

Split these into many ...(/etc/group)!!

Guys Following input line is from /etc/group file.As we know last entry in a line of /etc/group is userlist (all the users belonging to that group). I need to splilt this one line into 3 lines as shown below (3 because userlist has 3 names in it). Input: lp:!:11:root,lp,printq ... (13 Replies)
Discussion started by: ak835
13 Replies

5. Shell Programming and Scripting

HEX number grouping

Guys, I am looking for a small script which generates HEX sequence. Input to the script is starting hex number - Group ID and number of members in a group and total groups. e.g: we are generating 2 groups with 4 Members each starting with hex number 036A. I should get o/p in following format. ... (5 Replies)
Discussion started by: dynamax
5 Replies

6. Shell Programming and Scripting

awk to remove leading zeros for a hex number

Is it possible by using awk to remove leading zeros for a hex number? ex: 0000000011179E0A -> 11179E0A Thank you! (4 Replies)
Discussion started by: carloszhang
4 Replies

7. Shell Programming and Scripting

awk to compare hex number

$ awk 'BEGIN{ pat111=0x1000000002E3E02; snBegin=0x1000000002E3E01; if (pat111<=snBegin) printf "a\n"}' a Result is not correct. Looks like the number is too big. Any idea? Thx! Please use code tags <- click the link! (2 Replies)
Discussion started by: carloszhang
2 Replies

8. Shell Programming and Scripting

Convert Hex - KSH

Hello, I woild like to convert hex on KSH not BASH: I tried to use: tmp=31 printf "\x"${tmp}"" it works on bash - Output is '1' but not on ksh. please advice on the right syntax. Thanks. (4 Replies)
Discussion started by: LiorAmitai
4 Replies

9. Shell Programming and Scripting

Hex number sequence help

Need some help doing this ... with awk maybe Input 0DF6 0DF7 0DF8 0DF9 0DFA 0DFB 0DFC 0DFD 0DFF 0E00 0E01 0E02 0E03 0E04 0E05 0E06 (11 Replies)
Discussion started by: greycells
11 Replies

10. UNIX for Beginners Questions & Answers

Using sed to split hex string

Hi, I'm looking to split the following hex string into rows of four elements. I've tried the following but it doesn't seem to work. How can I tell sed to match based on a pair of number(s) and letter(s), and add a newline every 4 pairs? In addition, I need to add another newline after every... (5 Replies)
Discussion started by: sand1234
5 Replies
base32::hex(n)							  Base32 encoding						    base32::hex(n)

__________________________________________________________________________________________________________________________________________________

NAME
base32::hex - base32 extended hex encoding SYNOPSIS
package require Tcl 8.4 package require base32::core ?0.1? package require base32::hex ?0.1? ::base32::hex::encode string ::base32::hex::decode estring _________________________________________________________________ DESCRIPTION
This package provides commands for encoding and decoding of strings into and out of the extended hex base32 encoding as specified in the RFC 3548bis draft. API
::base32::hex::encode string This command encodes the given string in extended hex base32 and returns the encoded string as its result. The result may be padded with the character = to signal a partial encoding at the end of the input string. ::base32::hex::decode estring This commands takes the estring and decodes it under the assumption that it is a valid extended hex base32 encoded string. The result of the decoding is returned as the result of the command. Note that while the encoder will generate only uppercase characters this decoder accepts input in lowercase as well. The command will always throw an error whenever encountering conditions which signal some type of bogus input, namely if [1] the input contains characters which are not valid output of a extended hex base32 encoder, [2] the length of the input is not a multiple of eight, [3] padding appears not at the end of input, but in the middle, [4] the padding has not of length six, four, three, or one characters, CODE MAP
The code map used to convert 5-bit sequences is shown below, with the numeric id of the bit sequences to the left and the character used to encode it to the right. The important feature of the extended hex mapping is that the first 16 codes map to the digits and hex characters. 0 0 9 9 18 I 27 R 1 1 10 A 19 J 28 S 2 2 11 B 20 K 29 T 3 3 12 C 21 L 30 U 4 4 13 D 22 M 31 V 5 5 14 E 23 N 6 6 15 F 24 O 7 7 16 G 25 P 8 8 17 H 26 Q BUGS, IDEAS, FEEDBACK This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category base32 of the Tcllib SF Trackers [http://sourceforge.net/tracker/?group_id=12883]. Please also report any ideas for enhancements you may have for either package and/or documentation. KEYWORDS
base32, hex, rfc3548 CATEGORY
Text processing COPYRIGHT
Copyright (c) Public domain base32 0.1 base32::hex(n)
All times are GMT -4. The time now is 06:46 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy