Diff/head - not sure if this is the right command to use


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Diff/head - not sure if this is the right command to use
# 1  
Old 12-13-2012
Diff/head - not sure if this is the right command to use

Hi,

I need some advise on whether there is a better way of doing what I am currently planning to do. Perhaps I should be using arrays instead of re-directing output to files?

I need to use a tool/program named ADRCI provided by Oracle to remove trace files that it generates. Honestly it is not the best one to use but unfortunately the nature of the job calls for "WE MUST USE IT".

Anyway, the tool has issues where even if I say purge files that are x-number of days old, it still was not able to delete some of the very old files. I am guessing that it may be checking something internally in the database and hence not recognizing these very old files.

In this scenario, am ending up with files that are old and has to be deleted but not getting deleted.

At the moment, what I am looking at doing is as below:

Code:
01 - Run ls -1tr and get a file listing
02 - Run Oracle's ADRCI which will remove some files
03 - Run another ls -1tr
04 - Remove all files that are listed before the first file removed by ADRCI, retain the ones from the last file removed by ADRCI

Not sure if I stated it clearly. To illustrate what am wanting to do.

For example, if step 01 gives a list as below that I placed in x1.txt

Code:
 
 
x1.txt:
 
file1
file2
file3
file4
file5
file6
file7
file8
file9

- Then Oracle's ADRCI run and after I run I do another ls -1tr and redirect it to a file named x2.txt that has the following list:

Code:
 
 
akl1db922(oracle)[]/nas_mnt/common/dba_utils/scripts/tmp$: diff x1.txt x2.txt
4,6d3
< file4
< file5
< file6

 
x2.txt:

file1
file2
file3
file7
file8
file9

- This means, Oracle ADRCI remove the files named file4, file5, file6. And that also suggest that all files before file4 are old and not recognized by Oracle ADRCI anymore. Hence they can be deleted

- What am thinking is to use the diff command and then cat/awk/head/sed, am confused Smilie to get the list of files that I want to remove

Using diff for these two files, I get the result below:

Code:
 
 
$: diff x1.txt x2.txt
4,6d3
< file4
< file5
< file6

- Looking at the result, I only need the first line, 4,6d3, and then the first number which is 4 and subtract one from it. I then use cat/awk/head/sed x1.txt then run the rm on these files

- Using head, I get the list below which are the files that I want to remove

Code:
 
 
$: head -3 x1.txt
file1
file2
file3

Please advise if there is a better way of doing what I am intending to do. Should I use awk/sed instead of diff'ing and head'ing?

Thanks in advance.

Last edited by jim mcnamara; 12-13-2012 at 11:01 AM..
# 2  
Old 12-13-2012
The following seems to do what you want:
Code:
awk 'FNR==NR{f[FNR]=$0;next}
{       if(f[FNR] != $0) {
                end = FNR
                exit
        }
}
END{    if(end > 1) {
                printf("echo rm ")
                for(i = 1;i < end; i++)
                        printf(" '\''%s'\''", f[i]);
                printf("\n");
        } else  printf("echo \"ADRCI did not remove any files.\"\n")
}' x1.txt x2.txt | sh

Try it and if it looks like it identifies the correct set of files, change the first printf call in the END section from:
Code:
printf("echo rm ")

to:
Code:
printf("rm ")

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Head command queries

we have a file as below AREA,COUNTRY,RANK A,MX,1 A,MX,2 A,MX,5 A,MX,8 A,IN,7 A,IN,5 A,IN,21 B,CN,6 B,CN,2 B,CN,8 B,CN,0 we need the TOP 2 RANK records for the combination of Area, Country as below. i know head -2, which gives top 2 records from file but not sure it lists based on... (7 Replies)
Discussion started by: JSKOBS
7 Replies

2. Homework & Coursework Questions

UNIX head command not working?

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Write a script that allows the user to print the first n lines or the last n lines of every file in the... (18 Replies)
Discussion started by: lukefrost96
18 Replies

3. Homework & Coursework Questions

Unix find and head command help

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: I've been stuck on this problem for 2 days now What command would you enter to list the first lines of all text... (11 Replies)
Discussion started by: partieboi37
11 Replies

4. Shell Programming and Scripting

Script call : head: command not found

Hi, i am launching a script which open a ssh connexion to a cluster's node. Once on the node, the script calls the problematic command head and wc. I receive a message error as follow which come from two different scripts : line 31: head: command not found line 18: wc: command not found ... (6 Replies)
Discussion started by: masy1800
6 Replies

5. Shell Programming and Scripting

head command with more than one file

Hi, I have the following problem. I have files with one column of data (let's say file1.dat, file2.dat...file6.dat), and I would like to record the first value of the column of each file into another file (let's name it fileall.dat), which would have the the six values, one in each column. I use to... (4 Replies)
Discussion started by: josegr
4 Replies

6. UNIX for Dummies Questions & Answers

alternative for head command

Hi friends,I am new to unix and this is really a dummy question.but please help me out. How to simulate head command without using head command??? also tail command too,also more command. it is given as a homework to do....please tell me how to do (2 Replies)
Discussion started by: nikhilneela
2 Replies

7. UNIX for Dummies Questions & Answers

head command wont work on MF file

I am trying to do a head on a mainframe file and on doing ti just gives me a blank screen with nothing on it. however, when i do a tail for the same file...i get a few lines on the screen. i know tht mainframe files have all the records on one line...does this have to do something with this.... (10 Replies)
Discussion started by: alfredo123
10 Replies

8. Shell Programming and Scripting

head command

Hi All, How can the head command be used to extract only a particular line. By default head -n filename displays the first n lines. I want only the nth line. I couldn't get it from forum search. Thanks, Sumesh (6 Replies)
Discussion started by: sumesh.abraham
6 Replies

9. UNIX for Dummies Questions & Answers

Simple Command (head) Question

Okay, this probably sounds dumb for anyone who knows the answer, but I'm completely lost. I have to use the head command to search a directory AND all of its subdirectories to display the first line of all .txt files. I know how to do this: head -1 ~/UnixCourse/*.txt, but that does not search the... (4 Replies)
Discussion started by: jbud
4 Replies
Login or Register to Ask a Question