Need specific byte positions of a file

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need specific byte positions of a file
# 1  
Old 10-13-2009
Need specific byte positions of a file

Hello ,

I need to extract data from specific byte positions of a file.
I have tried the below command

awk ' { printf "%s", substr($0, 642363,642369}' filename

to extract data between byte positions
642363 and 642369 .

However I did not get the expected result.
I am new to awk and sed , please help to achieve the results that I want.
I am not sure if there any Unix command that would extract these details.
# 2  
Old 10-13-2009
while(<>)  {
    $txt .= $_;
    last if ( scalar split //, $txt ) >= ( 642369 );

$txt =~ s/(.{642363})(.{6})/\2/s;

print $txt;

Might be process intensive ?! Not tested, but expected to work.
# 3  
Old 10-13-2009
Well , I am new to sed and awk
please let me know how I run this script ?
# 4  
Old 10-13-2009
Yep, sorry for not mentioning it. It is actually a perl script.

1. Store this in a file, (any name),

$ cat
while(<>)  {
    $txt .= $_;
    last if ( scalar split //, $txt ) >= ( 642369 );

$txt =~ s/(.{642363})(.{6})/\2/s;

print $txt;

2. Execute it as,

$ perl input-file

It will extract the particular data, and prints it.
# 5  
Old 10-13-2009
Please can you make the byte positions as also variables
which can be passed along with file name.

Coz I need to do it several times over many files.

Thanks in advance.

---------- Post updated at 03:08 PM ---------- Previous update was at 02:56 PM ----------

Hello ,

I ran the below code :

while(<>)  {
    $txt .= $_;
    last if ( scalar split //, $txt ) >= ( 72551  );
$txt =~ s/(.{72545})(.{6})/\2/s;
print $txt;

and got the below message when I ran it like
perl file_name
Quantifier in {,} bigger than 32766 before HERE mark in regex m/(.{ << HERE 72545})(.{6})/

Please help.
# 6  
Old 10-13-2009
Another way using dd :
dd if=filename bs=1 skip=642362 count=8

An example with the following input file (which contains a single record)

To extract bytes from 501 to 510 :
> dd if=inputfile bs=1 skip=500 count=10 2>/dev/null

As you can see there is no line terminator in the output.

# 7  
Old 10-13-2009
Bad luck, that is your platforms max quantifier thing as said here perlre -

Does this helps for you:
$ tr '\n' ' ' < input-file | cut -c 72456-72551

  • translate new line to space
  • cut the required bits
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Replace specific positions in a file

I have a fixed-length positional file. I am trying to replace content of position 4-13 (length=10) with xxxxxxxxxx. Sample 2 rows in this file: H0187459823 172SMITH, JOE H0112345678 172DOE, JANE In this example 87459823 (from 1st line) and 12345678 (from 2nd line) (both in position... (3 Replies)
Discussion started by: Diver181
3 Replies

2. Shell Programming and Scripting

Search and replace specific positions of specific lines

Hi, I have a file with hundreds of lines. I want to search for particular lines starting with 4000, search and replace the 137-139 position characters; which will be '000', with '036'. Can all of this be done without opening a temp file and then moving that temp file to the original file name. ... (7 Replies)
Discussion started by: dsid
7 Replies

3. Shell Programming and Scripting

Char/byte positions of delimiters in file

I have a pipe delimited file and I'm trying to write a script that will give the character/byte positions of each pipe in the file. There may be some simple way but I don't know what it is... Can someone help with this? Ex: file has output below abc|def|ghi| I want the script to tell the... (1 Reply)
Discussion started by: basz808
1 Replies

4. Shell Programming and Scripting

Filter lines based on values at specific positions

hi. I have a Fixed Length text file as input where the character positions 4-5(two character positions starting from 4th position) indicates the LOB indicator. The file structure is something like below: 10126Apple DrinkOmaha 10231Milkshake New Jersey 103 Billabong Illinois ... (6 Replies)
Discussion started by: kumarjt
6 Replies

5. Shell Programming and Scripting

sed to replace specific positions on line with file contents

Hi, I am trying to use an awk command to replace specific character positions on a line beginning with 80 with contents of another file. The line beginning with 80 in file1 is as follows: I want to replace the 000000000178800 (positions 34 - 49) on this file with the contents of... (2 Replies)
Discussion started by: nwalsh88
2 Replies

6. Shell Programming and Scripting

Count specific characters at specific column positions

Hi all, I need help. I have an input text file (input.txt) like this: 21 GTGCAACACCGTCTTGAGAGG 50 21 GACCGAGACAGAATGAAAATC 73 21 CGGGTCTGTAGTAGCAAACGC 108 21 CGAAAAATGAACCCCTTTATC 220 21 CGTGATCCTGTTGAAGGGTCG 259 Now I need to count A/T/G/C numbers at each character location in column... (2 Replies)
Discussion started by: thienxho
2 Replies

7. Shell Programming and Scripting

output strings to specific positions in a file

Been searching for about 3 hours for similar functionality that I can get examples of how to output text from variables into certain locations in a file. I would like to incorporate this into a script. I have not been able to find a command example that does it all in one method. I find part of... (1 Reply)
Discussion started by: bennu_500
1 Replies

8. UNIX for Dummies Questions & Answers

Search flat file in specific byte

I am on AIX Unix. I want to read a flat file for a string in a certain byte. I want to find the value: 943034 in column 56; and write out just those records to another file. Also, could I get the line/record number of where it was found in the input file? Thank you, sboxtops (1 Reply)
Discussion started by: sboxtops
1 Replies

9. Shell Programming and Scripting

Read Write byte range/chunk of data from specific location in file

I am new to Unix so will really appreciate if someone can guide me on this. What I want to do is: Step1: Read binary file - pick first 2 bytes, convert from hex to decimal. Read the next 3 bytes as well. 2 bytes will specify the number of bytes 'n' that I want to read and write... (1 Reply)
Discussion started by: Kbenipel
1 Replies
Login or Register to Ask a Question