Scripting question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Scripting question
# 8  
Old 09-04-2015
Quote:
Originally Posted by arun888
I have the tried the below code for my requirment.

Need to read the file name from the input.txt and check whether the file exist in the below directory.

Code:
cat input.txt | tail -4
HTS40002.W1978.PROM
HTS40003.W1978.PROM
HTS40004.W1978.ADUS
HTS40003.W1978.PROM
HTS40004.W1978.ADUS
HTS40004.W1978.

This is interesting... You have shown us six lines of output from a command that should produce no more than four lines of output.

And, you say you want to process a file named input.txt, but the code that follows never reads that file. Instead, it reads two other files named project.txt and projection.txt. And, with default fields separators, awk will see only one field in each of the above lines; but your code below is using awk to extract the 3rd field from the 1st line of the file named projection.txt. Does the 1st line in project.txt have a different format than the lines you have shown us above in input.txt? If so, please show us the first few lines of input.txt instead of the last few lines.

Does the echo in your script print the value of $week that you were hoping to get? (If not; what does it print and what did you want it to print?)

Quote:
Originally Posted by arun888
Code:
#!/bin/ksh

grep 'PROM' projection.txt > prom.txt
grep 'ADUS' projection.txt >adus.txt
egrep -v 'PROM|ADUS' project.txt > none.txt
count=`cat project.txt | head -1 > pro.txt`
week=`awk '{print $3}' pro.txt`
input=w$week
echo $week

while read -r i
do
echo $i
if [ -s /retail/market/sali/$input/$i ]
then
echo " files is availbale"
else
echo " not available"
fi
done < prom.txt

while read -r i
do
echo $i
if [ -s /retail/market/sali/usmf/$input/$i ]
then
echo " files is availbale"
else
echo " not available"
fi
done < adus.txt

You code reads from projection.txt and project.txt and produces the files prom.txt, adus.txt, none.txt, and pro.txt.

What is the relationship between the input.txt you showed us above and the projection.txt, and project.txt files read by your script?

When your script exits, which of the files it produces are needed for something else; and which are just temporary files only needed within the above script?
# 9  
Old 09-07-2015
hi ravi,

Thanks for your input for my requirement really it is useful and learned few things.

The file name mentioned in the input file, PROD file contrains in the directory.

*PROM* /retail/market/loki/

Other files are present in the /retail/market/sali directory.

please let me know how change the directory and check whether the file exist.
Code:
 
ls -l $line > /dev/null 2>&1


Last edited by arun888; 09-07-2015 at 04:13 AM..
# 10  
Old 09-07-2015
Hello Arun,

Following may help you in same, if you have any queries then please be more specific in your requirement with complete details so that we can help you. Here I am requesting user itself to enter the initial path.
Code:
echo "Enter the directory's path where files present. Example: /path/to/files"
read PA
 while read line
do
    ZERO=0
    ls -l $PA"/"$line > /dev/null 2>&1
    if [[ $? -eq $ZERO ]]
    then
      echo "File named $line found."
    else
   echo "File named $line NOT found."
    fi
done < "Input_file"

Thanks,
R. Singh

Last edited by RavinderSingh13; 09-07-2015 at 04:19 AM..
# 11  
Old 09-07-2015
hi ravi,
sorry for not giving requirement properly.
In the input file , there are two keywords present in the file , "PROD" and "ADUS".
Could you please let me know how o hard code the directory for the above scenario.

if PROM name is present in the file it should check in
Code:
/retail/market/loki/

If ADUS name is present in the file it should check in
Code:
/retail/market/salil

cat input.txt | tail -4
HTS40002.W1978.PROM
HTS40003.W1978.PROM
HTS40004.W1978.ADUS
HTS40003.W1978.PROM
HTS40004.W1978.ADUS

Last edited by arun888; 09-07-2015 at 04:47 AM.. Reason: changes
# 12  
Old 09-07-2015
Perhaps something like:
Code:
#!/bin/ksh
ADUSf=adus.txt
ADUSp=/retail/market/salil
NONEf=none.txt
PROMf=prom.txt
PROMp=/retail/market/loki
rm -f "$ADUSf" "$NONEf" "$PROMf"
while IFS=. read head week tail
do      file="$head.$week.$tail"
        case "$tail" in
        (ADUS)  path="$ADUSp/$week/$file"
                printf '%s\n' "$file" >> "$ADUSf"
                ;;
        (PROM)  path="$PROMp/$week/$file"
                printf '%s\n' "$file" >> "$PROMf"
                ;;
        (*)     printf '%s\n' "$file" >> "$NONEf"
                continue
                ;;
        esac
        if [ -s "$path" ]
        then    printf '%s is available\n' "$file"
        else    printf '%s is not available\n' "$file"
        fi
done < input.txt

Note that -s tests for existence of a file with size greater than 0. If you just want to know if the file exists, change the:
Code:
        if [ -s "$path" ]

to:
Code:
        if [ -e "$path" ]

and if you want to know if it exists and is a regular file:
Code:
        if [ -f "$path" ]


Last edited by Don Cragun; 09-07-2015 at 04:57 AM.. Reason: Add note about various pathname tests.
This User Gave Thanks to Don Cragun For This Post:
# 13  
Old 09-07-2015
Hi Don Sir,

Really Thanks for your input. From your code I have learned lo of new things.

I have noticed the input file and it looks for "ADUS" the convention is different. I am not sure how to change the code.

Code:
cat input.txt | tail -4
HTS40002.W1978.PROM
HTS40003.W1978.PROM
HTS40004.W1978.SDLMF.ADUS
HTS40003.W1978.PROM
HTS40004.W1978.SDLMF.ADUS


Last edited by rbatte1; 09-07-2015 at 10:12 AM.. Reason: Added CODE tags
# 14  
Old 09-07-2015
Hi arun888,
It is hard to keep up with your changing requirements.

First every input line has three fields separated by periods. Then there are three fields and sometimes the 3rd field is empty. And now, sometimes there are three fields (for PROM files) and sometimes there are four fields (for ADUS files).

Instead of showing us examples of lines from your input file, please describe in English the format of the filenames in that file:
  1. How many (period separated) fields can there be in your filenames?
  2. Is the 2nd field (the string between the 1st and 2nd periods in the filename) always the week number?
  3. Is the last field always the field that contains ADUS or PROM (or none of the above)?
  4. Can any field other than the last field be empty (i.e., in addition to HTS40007.W1978. could there be a filename like HTS40006.W1978..PROM)?
With a clear description of the input you're trying to process, we can write code to process it. Without a clear description, we'll never know if we have code that can cope with a filename format we haven't seen before. Smilie

Please help us help you.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Scripting question

Hi I am trying to write a small script which takes one by one file name from a txt file and do a 'll' and need to check if equal to the given month, otherwise it should return back the file name. Note: the file name contains parameter. My code is given below: It is not working .. giving error... (6 Replies)
Discussion started by: Ravindra Swan
6 Replies

2. Shell Programming and Scripting

Scripting question

Preview of command prompt f ---> to start ferret q----> to stop ferret asp@nex:~$ f NOAA/PMEL TMAP FERRET v6.82 Linux 2.6.18-308.8.2.el5PAE 32-bit - 08/03/12 3-Dec-12 16:44 yes? go my.jnl yes?column=4/skip=1/type=num,text ............filename.txt ---... (4 Replies)
Discussion started by: nex_asp
4 Replies

3. UNIX for Dummies Questions & Answers

Scripting question

folks; I have a script to remove any files that older than 14 days then move any files that younger than 7 days to another directory. but for some reason it doesn't move the files, when i do it manually it works but not through the script. i tried 2 different ways in writing the move part but it... (6 Replies)
Discussion started by: Katkota
6 Replies

4. Shell Programming and Scripting

Scripting question

Folks; I'm writing a shell script to extract some fields out of a log file & it will run periodically, how can i make it runs starting from where it left of. for example; if the script will do the extract every 2 days, let's say the first run will extract fields until July 25, 2007 @ 11:15:22... (1 Reply)
Discussion started by: moe2266
1 Replies

5. Solaris

Scripting question

I'm writing a small script that will run an executable program (sort of like TOP). To exit the executable, you have to enter control C (^c). I'm trying to use a redirect input file to send the ^c but I'm not having any luck. My short script looks like this - /mydirectory/abc.script < abc.in >... (1 Reply)
Discussion started by: gonzotonka
1 Replies

6. Shell Programming and Scripting

scripting question?

I am writing a backup script for AIX 5 and running into a problem where the output isn't being shown in the output log that is being created. Any ideas on how this would be corrected? I have included the script below. The only thing showing up in the file is listed below. I was hoping to capture... (2 Replies)
Discussion started by: justinburbridge
2 Replies

7. Shell Programming and Scripting

scripting question

I'm new to shell scripting and am having a problem trying to do something in C shell. I want to write a script that will input something instead of a user doing it. For example, using the command 'write' the user is supposed to type something to be sent to another user. I want a script to be able... (3 Replies)
Discussion started by: batmike
3 Replies

8. Shell Programming and Scripting

another scripting question

Hello I am working on cleaning up permissions on Oracle mountpoints and datafiles in unix. I am looking for a script or a scripting idea to 1st. 1. grep for owner oracle 2. ensure its a directory owned for oracle 3. chmod 750 on the oracle owned directory. 4. grep for oracle files, etc... (3 Replies)
Discussion started by: jigarlakhani
3 Replies

9. Shell Programming and Scripting

Scripting Question

This script searches for core files and if it finds one, it emails me to let me know.I DONT want it to email me if it doesn't find one but I can't figure out what I need to change or add. Any thoughts? Script below: /bin/find / -name core -type f -ls -exec file {} \;|/usr/bin/mailx -s... (1 Reply)
Discussion started by: damielle
1 Replies

10. UNIX for Dummies Questions & Answers

another scripting question

I am writing a script that will identify the oldest file in a directory. Here's the syntax: #!/bin/ksh cd directory chmod 777 * ls -r -1t > file1 sed -n -e "1P" < file1 > file2 So my problem is, now I have file2, which contains the name of the oldest file in the directory. How do I use,... (1 Reply)
Discussion started by: kristy
1 Replies
Login or Register to Ask a Question