script help

R

rvaedex23

I wanted to read a file and select the first 2 characters and if they are 9A or 7A
I want to zero out columns 18 to 22 and 25 to 29.

If this can be done in Perl and Bash.

Can someone assist please. thanks
 
J

Jim Gibson

I wanted to read a file and select the first 2 characters and if they are 9A
or 7A
I want to zero out columns 18 to 22 and 25 to 29.

If this can be done in Perl and Bash.

Can someone assist please. thanks

Is your file text or binary? What do you mean by "zero out"?

Assuming that 1) your are talking about ASCII text and 2) the
replacement characters are ASCII '0', here is a short program that
demonstrates testing each line, replacing characters in the line
depending upon what the first two characters are, and printing the
result. If you mean something else, please let us know:

#!/usr/bin/perl
use strict;
use warnings;
while( my $line = <DATA> ) {
if( $line =~ /^[79]A/ ) {
substr($line,18,5) = '00000';
substr($line,25,5) = '00000';
}
print $line;
}
__DATA__
1234566890123456689012345668901234566890
7A34566890123456689012345668901234566890
8234566890123456689012345668901234566890
9A34566890123456689012345668901234566890
x9A34566890123456689012345668901234566890
1234566890123456689012345668901234566890
abcdefghijklmnopqrstuvwxyz0123456789


This program uses the magic <DATA> file read operator to read data
lines from the end of the program. In a real program, you would open an
external file using the open function:

open( my $in, '<', $myfile ) or die("Can't open $myfile: $!");

and then use $in in the read operation:

while( my $line = <$in> ) {

You would also want to open a new file:

open( my $out, '>', $newfile ) or
die("Can't open $newfile for writing: $!");

and print to the new file handle instead of system output:

print $out $line;

See if you can put all of that together and write your own program.
Post your program here if you have problems.

Good luck!
 
S

SSS Develop

This is possible - can you please state your exact problem. Try to provide possible input file and expected output file

---sss
 
C

ccc31807

I wanted to read a file and select the first 2 characters and if they are 9A or 7A
I want to zero out columns 18 to 22 and 25 to 29.
If this can be done in Perl and Bash.
Can someone assist please. thanks

Assuming that you have some kind of delimited file, you can do it like this (in pseudocode)

open infile
open outfile
while (<infile>)
{
if(first two characters don't match /[79]A/)
then write the line to the outfile
else
convert the line to an array
set the array elements [18-22][25-29] to 0
join the array back to a line
write the line to the outfile
}
close infile
close outfile
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,070
Latest member
BiogenixGummies

Latest Threads

Top