HP Unix Script to Delete the lines in a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting HP Unix Script to Delete the lines in a file
# 1  
Old 05-19-2010
HP Unix Script to Delete the lines in a file

Hi Experts,

I have a file format as mentioned below. I would like to have unix script (HP Unix) which can:

1. Remove first 6 and last 3 lines.
2. Delete the lines where 3rd column having Alpha Numeric Number
3. Delete the lines where 4th column having 0.00
4. Calculate the sum of all the values in 4th column. If it is 0. Write in a log file "Sum is Zero". Else Rename the file as Invaild File.

Sample File Snippet



Code:
"RPT TRIALB           ABC   LIMITED"
"                     TRIAL BALANCE"
"                     FOR THE PERIOD ENDED DECEMBER 2009"
""
""
""
"A","Retail Bank1","1234",1000,0.00,738295.08,0.00
"B","Retail Bank2","5678",2000,0.00,738295.08,0.00
"C","Retail Bank3","9101",2000,0.00,738295.08,0.00
"D","Retail Bank4","A984",-2000,0.00,738295.08,0.00
"E","Retail Bank5","23215",0.00,0.00,738295.08,0.00
"","","",,,,
"","","",,,,
"END OF REPORT"


Last edited by Scott; 05-19-2010 at 03:51 PM.. Reason: Code tags please...
# 2  
Old 05-19-2010
Can you show us the code you have so far, and tell us how it misbehaves?
# 3  
Old 05-19-2010
Hi Franklin,

I am new to Unix Scripting. I am getting the code in bits and pieces. I am not sure how to place them in a single script file to achieve this.

eg.
Code:
head -n -3 file name --> will remove last 3 lines
sed '1,6d' file name --> will remove first 6 lines


Last edited by Scott; 05-19-2010 at 03:49 PM.. Reason: Code tags
# 4  
Old 05-19-2010
Code:
#!/usr/local/bin/perl

use strict;
use warnings;

my $bankfile='bankfile';
my $bfinvalid="$bankfile" . ".invalid";
my $logfile='logfile';
my @temparr=();
my $sum=0;

open(BF,$bankfile) or die "Error opening input file $bankfile: $!\n";
my @bankdata=<BF>;
close(BF);

for (1 .. 6) {
shift(@bankdata);
}

for (1 .. 3) {
pop(@bankdata);
}

foreach my $record (@bankdata) {
chomp($record);
my @splitarr = split(/,/,$record);
push(@temparr, "$record\n") if ($splitarr[2] !~ /[a-zA-Z]/ && $splitarr[3] !~ /^0.00/);
}

foreach my $amount (@temparr) {
chomp($amount);
my @splitarr = split(/,/,$amount);
$sum += $splitarr[3];
}

if ($sum == 0) {
open(LF,">$logfile") or die "Error opening logfile $logfile: $!\n";
print LF "Bankfile $bankfile: Sum is Zero\n";
close(LF);
}
else {
rename $bankfile, $bfinvalid;
}

You might want to change this line
Code:
open(LF,">$logfile") or die "Error opening logfile $logfile: $!\n";

to
Code:
open(LF,">>$logfile") or die "Error opening logfile $logfile: $!\n";

if you want to _append_ the line "Bankfile $bankfile: Sum is Zero" to already existing logfile, instead of creating a new logfile.
# 5  
Old 05-19-2010
Another one:
Code:
awk -F, -v n=$(wc -l < file) '
NR < 7 || $3 ~ /[A-Za-z]/ || int($4)==0 {next}
NR==(n-2){exit}
{s+=$4}
END{if(!s)print "Sum is Zero" > "Logfile"}
1' file


Last edited by Franklin52; 05-19-2010 at 03:52 PM.. Reason: typo
This User Gave Thanks to Franklin52 For This Post:
# 6  
Old 05-31-2010
Hi Frank,

Thank you very much for the script. I want to ignore the 4th condition. I am happy if script does the first 3 conditions for me. I think I should remove last 3 lines from your code to achieve this. Thank you.

awk -F, -v n=$(wc -l < file) '
NR < 7 || $3 ~ /[A-Za-z]/ || int($4)==0 {next}
NR==(n-2){exit}


{s+=$4}
END{if(!s)print "Sum is Zero" > "Logfile"}
1' file



1. Remove first 6 and last 3 lines.
2. Delete the lines where 3rd column having Alpha Numeric Number
3. Delete the lines where 4th column having 0.00
4. Calculate the sum of all the values in 4th column. If it is 0. Write in a log file "Sum is Zero". Else Rename the file as Invaild File.

Last edited by phani333; 05-31-2010 at 05:06 AM..
# 7  
Old 05-31-2010
Try:
Code:
awk -F, -v n=$(wc -l < file) '
NR < 7 || $3 ~ /[A-Za-z]/ || int($4)==0 {next}
NR==(n-2){exit}
1' file

This User Gave Thanks to Franklin52 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

How to find a string in a line in UNIX file and delete that line and previous 3 lines ?

Hi , i have a file with data as below.This is same file. But actual file contains to many rows. i want to search for a string "Field 039 00" and delete that line and previous 3 lines in that file.. Can some body suggested me how can i do using either sed or awk command ? Field 004... (7 Replies)
Discussion started by: vadlamudy
7 Replies

2. Shell Programming and Scripting

Help with UNIX script --Read from one file and delete entries in other

Hi Guru's The script has to read an entry from one file and delete the set of lines form other file. Below is the format of the file. In the below example, script should read the entries from input file 2 and delete the entries from input file 1. Input file 1 cn: test@test1.com abc:... (7 Replies)
Discussion started by: Samingla
7 Replies

3. Shell Programming and Scripting

How to delete the lines from file using script?

Hi Iam having file like below 10.238.52.65 pun-ras-bng-mhs-01 server 10.238.52.65 pun-ras-bng-mhs-01 10.10.10.10 10.238.52.65 pun-ras-bng-mhs-01 10.10.20.10 10.238.54.1 enk-ras-bng-cse-01 server 10.238.54.1 enk-ras-bng-cse-01 10.10.30.10 10.238.54.1 enk-ras-bng-cse-01 10.10.10.10 ... (5 Replies)
Discussion started by: surender reddy
5 Replies

4. UNIX for Advanced & Expert Users

In a huge file, Delete duplicate lines leaving unique lines

Hi All, I have a very huge file (4GB) which has duplicate lines. I want to delete duplicate lines leaving unique lines. Sort, uniq, awk '!x++' are not working as its running out of buffer space. I dont know if this works : I want to read each line of the File in a For Loop, and want to... (16 Replies)
Discussion started by: krishnix
16 Replies

5. Shell Programming and Scripting

script to delete lines from a txt file if pattern matches

File 6 dbnawldb010-b office Memphis_Corp_SQL_Diff Memphis-Corp-SQL-Inc-Application-Backup 03/09/11 03:24:04 42 luigi-b IPNRemitDB Memphis_Corp_SQL_Diff Memphis-Corp-SQL-Inc-Application-Backup 03/10/11 00:41:36 6 ebs-sqldev1-b IPNTracking Memphis_Corp_SQL_Diff... (4 Replies)
Discussion started by: ajiwww
4 Replies

6. Shell Programming and Scripting

looking for a script that will delete lines in a text file

it will grep for a line and then delete these line. how do i begin to write this script if theres no available one? (3 Replies)
Discussion started by: garfish
3 Replies

7. Shell Programming and Scripting

Delete lines from file using Unix Script

Hi Experts, I have a file in the below given format. First two lines are header and Trailer. Rest all are transaction Lines. I have to delete all other lines except first line (Header) and lines which contains 5000 in 1st column and 0 in 5th column. Can anyone please kindly provide me with... (6 Replies)
Discussion started by: phani333
6 Replies

8. Shell Programming and Scripting

Need Shell Script to delete lines in a file

Hi All, I have a file with 3 columns (Bank Name, Account Number and Amount). My requirement, I need to delete lines using Unix Shell script: 1. Which are having Alphanumeric characters in Account Number (eg. Line3). 2. Which are having 0.00 in amount. (eg. Line4) 3. And also I need to... (4 Replies)
Discussion started by: phani333
4 Replies

9. Shell Programming and Scripting

Delete lines at several places in a file with script

Hi, I am a newbie to shell scripting, and I have a file which quite large which I would like to delete lines at certain places. I want to search for a keyword which is recurring in the file. When matched I would like to delete the line. And when the file was so huge I thought I ought to learn... (3 Replies)
Discussion started by: mr_andrew
3 Replies

10. Shell Programming and Scripting

How to Delete all lines in a file from a script

I am trying to delete all the lines out a file from a unix script. Please help Platform is Sun (3 Replies)
Discussion started by: alnita
3 Replies
Login or Register to Ask a Question