Scripting question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Scripting question
# 1  
Old 09-04-2015
Scripting question

hi all,

I am writing a script and beginner in shell scripting. I have tried the below script. could you please check and let me know whether the below scirpt is correct.

Unix details : HP Unix

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


Code:
#!/bin/ksh
for i in `cat input.txt`;do
echo $i
if [ grep "PROM" $i ]
then 
echo "PROM FOUND"
elif [ grep "ADUS" $i ]
then 
echo "ADUS FOUND"
else
echo " NONE"
fi
done;

# 2  
Old 09-04-2015
Hello Arun,

You need to check if word is present in complete file or not, following may help you in same then.
Code:
awk '{if($0 ~ /PROM/){A=1};if($0 ~ /ADUS/){B=1}} END{if(A){print "PROM found in file."} else {print "PROM NOT found."};if(B){print "ADUS found in file."} else {print "ADUS NOT found in file."};if(!A && !B){print "BOTH ADUS and PROM coulndnopt find in input file."}}'  Input_file

Following is output, I have used input_file as per your sample provided.
Code:
PROM found in file.
ADUS found in file.

On a Solaris/SunOS system, change awkto /usr/xpg4/bin/awk , /usr/xpg6/bin/awk , or nawk.


Thanks,
R. Singh
# 3  
Old 09-04-2015
You don't give enough details about what your script is supposed to do for anyone but you to say whether or not it is correct.

You should learn to indent your code so that the structure of your script is easy to see. Putting all of your code at the left margin makes it hard to see where loops start and end, where if statements start and end, etc.

Using:
Code:
for i in `cat file`
do	if ...
	then	echo ...
	elif ...
	then	echo ...
	fi
done

is almost always better written using:
Code:
while read -r i
do	...
done < file

If input.txt contains a list of filenames and you are trying to determine whether or not text in each of those files contain the string PROM and, if not, if each of those files contain the string ADUS, your script might be correct.

If you are trying to determine whether or not each line in input.txt ends with the string PROM or the string ADUS, that is NOT what your script does.
# 4  
Old 09-04-2015
hi ravinder,

Thanks for your help. Is there any possibilty to check using the grep statement.

---------- Post updated at 04:26 AM ---------- Previous update was at 02:59 AM ----------

I have tried for the below requirement. But i am not sure whether i am coding in right away. it would be great if you could help me on this.

Requirement is it should read the below text file and check the below path whether the file is exist or not.
Code:
Check :
PROM words is present in the input it should be checked in loki direcory whether the file is exist.
ADJUS words is present in the input it should be checked in loki direcory whether the file is exist.
 *PROM* /retail/market/loki/W1978 
 *ADUS* /retail/market/sali/W1978


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

# 5  
Old 09-04-2015
I have to repeat what Don Cragun said: We cannot deduce what you need from what you say. Does the file "input.txt" contain file names to be found in a to-be-named directory? Should the files from "input.txt" in that unknown directory be checked for certain words? Which words? Or do you want to check the sheer existence of the file named in "input.txt"?
# 6  
Old 09-04-2015
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.

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

# 7  
Old 09-04-2015
Hello aurn,

Following may help you in same.
Code:
###One liner form:
while read line; do ZERO=0; ls -l $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"
  
OR
### NON one liner form:
while read line
do
    ZERO=0
    ls -l $line > /dev/null 2>&1
    if [[ $? -eq $ZERO ]]
    then
      echo "File named $line found."
    else
   echo "File named $line NOT found."
    fi
done < "check1213"

Output will be as follows.
Code:
File named HTS40002.W1978.PROM found.
File named HTS40003.W1978.PROM NOT found.
File named HTS40004.W1978.ADUS found.
File named HTS40003.W1978.PROp NOT found.
File named HTS40004.W1978.ADUS found.
File named HTS40004.W1978.PDnm NOT found.
File named HTS40002.W1978.PRjk NOT found.
File named HTS40003.W1978.PRyu NOT found.
File named HTS40004.W1978.ADdf NOT found.
File named HTS40003.W1978.PRqw found.
File named HTS40004.W1978.ADrt NOT found.
File named HTS40004.W1978.PDDT found.

NOTE: Input file used is as follows: Also I have placed script in same path where I need to look for files, if you want to setup script somewhere else then with ls command you can add complete path. Also I have created files named HTS40004.W1978.PDDT, HTS40003.W1978.PRqw, HTS40004.W1978.ADUS, HTS40002.W1978.PROM.
Code:
 cat check1213
HTS40002.W1978.PROM
HTS40003.W1978.PROM
HTS40004.W1978.ADUS
HTS40003.W1978.PROp
HTS40004.W1978.ADUS
HTS40004.W1978.PDnm
HTS40002.W1978.PRjk
HTS40003.W1978.PRyu
HTS40004.W1978.ADdf
HTS40003.W1978.PRqw
HTS40004.W1978.ADrt
HTS40004.W1978.PDDT

Thanks,
R. Singh

Last edited by RavinderSingh13; 09-04-2015 at 11:26 AM.. Reason: Adding file names which I have created for testing purposes.
This User Gave Thanks to RavinderSingh13 For This Post:
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