Sponsored Content
Top Forums Programming searching files for hex or oct values Post 302441219 by fpmurphy on Thursday 29th of July 2010 09:06:33 PM
Old 07-29-2010
Here is one way of doing it using C
Code:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define GZIP_MAGIC "\037\213"     /* Magic header for gzip files, 1F 8B */

int
main(int argc, char *argv[])
{
    int fd;
    char magic[2];
    ssize_t ret;

    if (argc < 2) {
        fprintf (stderr, "ERROR: A filename must be specified.\n");
        exit(1);
    }

    fd = open(argv[1], O_RDONLY);
    if (fd < 0) {
        fprintf (stderr, "ERROR: cannot open %s\n", argv[1]);
        exit(1);
    }

    if ((ret = read(fd, &magic, 2)) == -1) {
        fprintf (stderr, "ERROR: cannot read %s\n", argv[1]);
        exit(1);
    }

    if (memcmp(magic, GZIP_MAGIC, 2) == 0) {
        fprintf (stdout, "%s is a gzipped file\n", argv[1]);
    } else {
        fprintf (stdout, "%s is not a gzipped file\n", argv[1]);
    }

    close(fd);
    exit(0);
}

 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Modifying binary file by editing Hex values ?

Hi , i'm using special binary file (lotus notes) and modifying an hexadecimal address range with windows hex editor and it works fine ! The file is an AIX one and i'm forced to transfert (ftp) it before modifying it and re-transfert ! NOW i would do this directly under AIX ! I can... (4 Replies)
Discussion started by: Nicol
4 Replies

2. Programming

After converting the hexstr to Hex and storing the Hex in a char*

Hi All, My main intension of is to convert the Hexstring stored in a char* into hex and then prefixing it with "0x" and suffix it with ',' This has to be done for all the hexstring char* is NULL. Store the result prefixed with "0x" and suffixed with ',' in another char* and pass it to... (1 Reply)
Discussion started by: rvan
1 Replies

3. Shell Programming and Scripting

Searching data files for another file of values

I've used awk for some simple scripting, but having trouble figuring out how to search a couple of data files that have Name/Address/Zip Codes from another file that has list of only Zip Codes, and write out the lines that matched. Zip code field in the data file is 27 I was thinking... (5 Replies)
Discussion started by: matkins99
5 Replies

4. Shell Programming and Scripting

Convert hex values to displayable characters

Hi, I am a bit stuck with displaying characters. I am having values like below in the proper displayable characters. which I would want to print the actual value on the right hand side. I dont want to create an array because I would have to create 255 different values. isnt there another way of... (17 Replies)
Discussion started by: ahmedwaseem2000
17 Replies

5. Shell Programming and Scripting

Help search and replace hex values only in specific files

perl -pi -e 's/\x00/\x0d\x0a/g' `grep -l $'GS' filelist` This isn't working :confused:, it's not pulling the files that contain the regex. Please help me rewrite this :wall:. Ideally for this to work on 9K of 20K files in the directory, I've tried this but I don't know enough about awk... (7 Replies)
Discussion started by: verge
7 Replies

6. Shell Programming and Scripting

Searching columns and subtracting values in awk

Hi everyone, I had a similar question a couple days ago but my problem has gotten significantly (to me anyway) more complex. I have two files: File 1: 0808 166 166 62 9 0 1000fights 1 1 2 1 0 100places2visit 2 2 2 2 0 10veronica91 167 167 3 1 0 11thgorgeous 346 346 3806 1461 122... (2 Replies)
Discussion started by: collards
2 Replies

7. Shell Programming and Scripting

Searching for values in a file

Hi guys. I'm trying to do a search on the fruit & brand inside Fruit.txt, and printing the result out in the following format: , , $, I am able to do this via the following code: awk -F: -vOFS=", " -vt="$Fruit:$Brand" '$0~t{$3="$"$3;print}' Fruit.txt However, I want to be able to... (5 Replies)
Discussion started by: todaealas
5 Replies

8. Shell Programming and Scripting

Swapping a string of numbers between higher and lower order values(HEX)

I have this below string in a variable cutString=21222222222222222122222222222222 this string is nothing but hex values depicted as below 21:22:22:22:22:22:22:22:21:22:22:22:22:22:22:22 so what i want to achieve is swap the lower order with higher order values in the... (3 Replies)
Discussion started by: vivek d r
3 Replies

9. Shell Programming and Scripting

How to replace with "sed" some hex values by other hex values?

Assume I have a file \usr\home\\somedir\myfile123.txt and I want to replace all occurencies of the two (concatenated) hex values x'AD' x'A0' bytwo other (concatenated) hex values x'20' x'6E' How can I achieve this with the gnu sed tool? Additional question: Is there a way to let sed show... (1 Reply)
Discussion started by: pstein
1 Replies

10. UNIX for Advanced & Expert Users

Replace hex values using sed command

File lalo.txt contains: Á I need to replace Á by A using sed command. od -x lalo.txt 0000000 c10a 0000002 sed -e 's/\xc1\x0a/A/g' lalo.txt > lalo2.txt Also tried: sed -e 's/\xc3\x81/A/g' lalo.txt > lalo2.txt Output file lalo2.txt still has Á Unix version: SunOS 5.11 ... (9 Replies)
Discussion started by: mrreds
9 Replies
GFS_PIO_READDELIM(3)													      GFS_PIO_READDELIM(3)

NAME
gfs_pio_readdelim - read one record SYNOPSIS
#include <gfarm/gfarm.h> char *gfs_pio_readdelim (GFS_File f, char **bufp, size_t *sizep, size_t *lenp, char *delimiter, size_t delimlen); DESCRIPTION
gfs_pio_readdelim() works like gfs_pio_readline(), except a delimiter of input records is not always newline, and can be specified. This function reads one record from the file specified by the parameter gf, by using the parameter delimiter as the delimiter of the input records. You can include '' character in the delimiter, So, you have to specify the length of the delimiter by the parameter delimlen. If parameter delimiter is NULL, this function reads entire file as one record. Otherwise, and if the parameter delimlen is 0, this func- tion treats two or more consecutive empty lines (/ +/ in a regular expression) as the input delimiter. This feature is derived from INPUT_RECORD_SEPARATOR in perl language. Parameter bufp specifies an address of a pointer variable initialzed by NULL at first. gfs_pio_readdelim() allocates a buffer for I/O dynamically, and stores the address of the buffer to this variable pointed by bufp. Parameter sizep specifies an address of a size_t vari- able initialized by 0. This size_t variable is used to record the size of the buffer. Or, you can specify a buffer allocated by malloc(3) in the variable pointed by the parameter bufp. In this case, you have to specify the size of the allocated buffer by the parameter sizep. If the length of the record exceeds the size of the buffer, the buffer will be automatically realloc(3)ed, and the variable pointed by bufp and sizep will be updated respectively. Note that you are responsible to free(3) this buffer. This function returns the length of the record to a variable pointed by the parameter lenp. This length includes the length of the record delimiter. This function doesn't remove the delimiter at the end of records. Also, despite that you can use the value returned by the variable pointed by lenp, this function always appends ' character at the end of records. If the file reaches its end, the length of the result record becomes 0. gfs_pio_readdelim(f, bufp, sizep, lenp, " ", 1) is equivalent to gfs_pio_readline() function. RETURN VALUES
NULL The function terminated successfully. GFARM_ERR_NO_MEMORY Insufficient memory was available. Note that you need to free(3) the buffer pointed by the parameter bufp Others An error except the above occurred. The reason is shown by its pointed strings. EXAMPLES
EXAMPLE OF GFS_PIO_READDELIM FUNCTION #include <stdio.h> #include <stdlib.h> #include <string.h> #include <gfarm/gfarm.h> int main(int argc, char **argv) { char *e; GFS_File gf; size_t bufsize = 0, delimlen = 1, len; char *buffer = NULL, *delim = " "; e = gfarm_initialize(&argc, &argv); if (e != NULL) { fprintf(stderr, "gfarm_initialize: %s ", e); return (EXIT_FAILURE); } while ((c = getopt(argc, argv, "d:D")) != -1) { switch (c) { case 'd': delim = optarg; delimlen = strlen(optarg); break; case 'D': delim = NULL; delimlen = 0; break; case '?': default: fprintf(stderr, "invalid option: %c ", c); return (EXIT_FAILURE); } } if (optind >= argc) { fprintf(stderr, "missing gfarm filename "); return (EXIT_FAILURE); } e = gfs_pio_open(argv[optind], GFARM_FILE_RDONLY, &gf); if (e != NULL) { fprintf(stderr, "%s: %s ", argv[optind], e); return (EXIT_FAILURE); } e = gfs_pio_set_view_global(gf, 0); if (e != NULL) { fprintf(stderr, "%s: gfs_pio_set_view_global: %s ", argv[optind], e); return (EXIT_FAILURE); } while ((e = gfs_pio_readdelim(gf, &buffer, &bufsize, &len, delim, delimlen)) == NULL && len > 0) { printf("<%6d/%6d >%s", len, bufsize, buffer); } if (buffer != NULL) free(buffer); if (e != NULL) { fprintf(stderr, "ERROR: %s ", e); return (EXIT_FAILURE); } e = gfs_pio_close(gf); if (e != NULL) { fprintf(stderr, "gfs_pio_close: %s ", e); return (EXIT_FAILURE); } e = gfarm_terminate(); if (e != NULL) { fprintf(stderr, "gfarm_initialize: %s ", e); return (EXIT_FAILURE); } return (EXIT_SUCCESS); } SEE ALSO
gfs_pio_open(3), gfs_pio_getline(3), gfs_pio_gets(3), gfs_pio_readline(3) Gfarm 13 May 2004 GFS_PIO_READDELIM(3)
All times are GMT -4. The time now is 04:26 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy