Sponsored Content
Top Forums Shell Programming and Scripting UNIX Shell Scripting (Solaris) for File Checking Post 302974728 by Don Cragun on Thursday 2nd of June 2016 02:58:09 PM
Old 06-02-2016
The directories you are searching, the strings you are matching, the names of the files you are processing in the directories you are searching, and the shell you are using seems to change with every post you make. We can't keep up with all of the changes you are making and we still do not have a clear description of what you are trying to do. (Especially whether some of the pathnames you are supplying are the names of files to be processed or the names of directories [AKA folders] containing files to be processed.)

But some problems with your code in post #26:
Code:
#list all folders for FTR
folderFTR="/files05/home/chgtpst/GT/outb/CHTR/FTR/9/archive_ia
/files05/home/chgtpst/GT/outb/CHTR/FTR/9/send_ia
/files05/home/chgtpst/GT/outb/CHTR/FTR/9/send"

#list all folders for VRZ
folderVRZ="/files05/home/chgtpst/GT/outb/CHTR/VRZ/9/archive_ia
/files05/home/chgtpst/GT/outb/CHTR/VRZ/9/send
/files05/home/chgtpst/GT/outb/CHTR/VRZ/9/send_ia/success"


#Main program for FTR
for f in $folderFTR
do
    if [ 'grep FTRORD -l "$f"' ]
    then
        echo "invalid file in $f" >> /home/abainzd/logfile.txt

    else
       exit 1 
    fi
done


#Main program for VRZ
for f in $folderVRZ
do
    if [ 'grep CHTRVRZPRD -l "$f"' ]
    then
        echo "Invalid file in $f" >> /home/abainzd/logfile.txt

    else
       exit 1 
    fi
done

include (but might not be limited to):
  1. You have said you are using the Korn shell, but there is nothing in this script that specifies that. Make the 1st line of your script be #!/bin/ksh.
  2. We can't tell from what you have shown us whether the three pathnames you assigned to the shell variable folderVRZ are the names of directories (which you call folders) or are pathnames of three regular files in the directory /files05/home/chgtpst/GT/outb/CHTR/VRZ/9.
  3. The test command [ 'grep FTRORD -l "$f"' ] ALWAYS evaluates to true because the argument being evaluated 'grep FTRORD -l "$f"' is a non-empty fixed string. It does not execute grep and it does not expand "$f" (shell variables are not expanded when they are surrounded by single quotes) to the name of a file (directory or regular file). And, assuming (based solely on the name of your variables) that you intend for $f to expand to the name of a directory, the grep utility looks for matches to a regular expression in the text file(s) named as its file operand(s); it does NOT search all of the files in a directory named as a file operand and it does not try to match filenames in a directory to your regular expression. The behavior of grep is only defined when the pathnames of the files you ask it to process are text files (and directories are not text files)!
I apologize for not noticing that you used /bin/sh when you ran my script instead of /bin/ksh) after you had told us at least three times that you were using the Korn shell.

I apologize for not mentioning that you would have to use /usr/xpg4/bin/grep instead of /usr/bin/grep to use the -q option.

I have absolutely no explanation for why you modified the script I suggested in post #21 to process the four files you described in post #20:
Code:
cd home/solaris/unix/samplefiles/ && \
for file in *.txt
do	if ! grep -q davehandsome "$file"
	then	printf 'File "%s" does not contain the string "davehandsome"\n' "$file"
	fi
done

to:
Code:
cd $EDI_ROOT/GT/outb/CHTR/VRZ/9/send && \
for file in *.edi
do      if ! /usr/xpg4/bin/grep  -q CHTRVRZPRD "$file"
        then    printf 'File "%s" does not contain the string "CHTRVRZPRD"\n' "$
file"
        fi
done

and ran it in a directory where there are no filenames that end with the string .edi when you said you wanted to look for a different string in one of four existing files in a different directory.

If you had told us that some of the directories you want to search do not contain any files, we would have suggested different code, perhaps something more like:
Code:
#!/bin/ksh
EDI_ROOT="/absolute/path/to/directory"
# The absolute pathname of the directory named by EDI_ROOT must contain a
# subdirectory accessible by the relative pathname "BT/outb/CHTR/VRZ/9/send".

cd $EDI_ROOT/GT/outb/CHTR/VRZ/9/send && \
for file in *.edi
do      if [ -f "$file" ] && ! /usr/xpg4/bin/grep  -q CHTRVRZPRD "$file"
        then    printf 'File "%s" does not contain "CHTRVRZPRD"\n' "$file"
        fi
done

Note that case matters in Solaris and other UNIX systems. The string "UNIX" and the string "unix" are NOT the same. (Case matters!)

If you were asked (as an EE) to create a circuit that is given +5V DC power and instead of +5V DC power the user connected it to 120V AC power, should we be disappointed if your circuit exploded? If you tell us you want to search for a string in a bunch of files that match a certain filename matching patter in a directory, don't be surprised if a grep command that we suggest doesn't do what you want if you ask it to process files matching a pattern that does not match any files in that directory. If you tell us you want to search for a string in a bunch of files in a directory, don't be surprised if a grep command that we suggest doesn't do what you want if you give it the name of a directory to process instead of a list of one or more files in that directory to process.

Computers can do some things very quickly. They usually do exactly what you ask them to do even if what you ask them to do is dangerous. In CS we have a frequently referenced acronym: GIGO (Garbage In, Garbage Out). If your specifications are not clear (GI), the results you get from running code written to meet what the programmer guesses you meant are likely to give you GO.

Please help us help you!
This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

difference between AIX shell scripting and Unix shell scripting.

please give the difference between AIX shell scripting and Unix shell scripting. (2 Replies)
Discussion started by: haroonec
2 Replies

2. AIX

Unix shell scripting to find latest file having timestamp embedded...

Hi guys, I have a directory in UNIX having files with the below format, i need to pickup the latest file having recent timestamp embedded on it, then need to rename it to a standard file name. Below is the file format: filename_yyyymmdd.csv, i need to pick the latest and move it with the... (2 Replies)
Discussion started by: kaushik25
2 Replies

3. Solaris

How to check the file existence using shell scripting in Solaris-10

Hi, I have a script which will check the fiel existence, the lines are as below if !(test -d ./data) then mkdir data fi In the first line error occurs as below generatelicense.sh: syntax error at line 2: `!' unexpected Where as this script works fine in linux OS. How to solve... (2 Replies)
Discussion started by: krevathi1912
2 Replies

4. UNIX for Dummies Questions & Answers

Unix Shell Scripting -- update employees not present in input file

ALL, My shell script takes a employee file as input. I have to identify the list of employees not in the input file and update their status in the database. Approach I followed: by traversing through the input file add all the emplid's to a variable. update the status of employees not in... (2 Replies)
Discussion started by: sailussr
2 Replies

5. Shell Programming and Scripting

C Shell Scripting - HELP! - checking total args in a script

Hi, I 'm trying to learn the scripting language and am trying to create a script to open a C Program, allow the user to edit it, and then run it. What I have works but only when you enter the name to be compiled and the c program, but what if you only entered the 1 argument (cprogram.c) ? but I 'm... (3 Replies)
Discussion started by: patel_ankz
3 Replies

6. Shell Programming and Scripting

generate tabular output from an input text file in unix shell scripting

Hi, I have the output (as below) which i want it to be in a table. For e.g. space utilization in PSE on path /logs is 0% space utilization in PSE on path /logs/tuxedo/tuxlsp is 16% space utilization in PSE on path /ldvarlsp/lsp/log is 37% space utilization in PSE on path /home is 6%... (7 Replies)
Discussion started by: pkbond
7 Replies

7. Shell Programming and Scripting

Request for file read option in Unix shell scripting

Hi Friends, I would like to read all the record from one txt file to other file txt For example I have two txt file a.txt and b.txt. I need to read a.txt record by record and I need add the system date @ end of each record before moving it to b.txt. Could you please share the coding for... (4 Replies)
Discussion started by: vinoth124
4 Replies

8. Shell Programming and Scripting

How to add trailer record at the end of the flat file in the unix ksh shell scripting?

Hi, How to add trailer record at the end of the flat file in the unix ksh shell scripting can you please let me know the procedure Regards Srikanth (3 Replies)
Discussion started by: srikanth_sagi
3 Replies

9. Shell Programming and Scripting

Read csv file, convert the data and make one text file in UNIX shell scripting

I have input data looks like this which is a part of a csv file 7,1265,76548,"0102:04" 8,1266,76545,"0112:04" I need to make the output data should look like this and the output data will be part of text file: 7|1265000 |7654899 |A| 8|12660000 |76545999 |B| The logic behind the... (6 Replies)
Discussion started by: RJG
6 Replies

10. Solaris

Solaris Shell Scripting

Hi, Want to know, is there any way to restrict a Solaris user to Single Login. Means a particular user can login once and if he or someone else tries to login with his ID then a message displayed "user already logged in" and denies his attempt. Regard, Jeet (1 Reply)
Discussion started by: CountJeet
1 Replies
All times are GMT -4. The time now is 09:29 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy