Need help writing a small script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help writing a small script
# 1  
Old 06-12-2008
Need help writing a small script

Hi I am trying to do the following:

run a command that looks at a binary file and formats it
find the first line that has what I am looking for (there will be multiple)
print the name of the file that has it

So I am running this but ti's not working

ls -ltr *20080612* | while read line
do
convertfile.ksh $line | grep "2007"
echo $line
done

Do I need an IF statement somewhere?

Thanks!

Last edited by llsmr777; 06-12-2008 at 12:08 PM..
# 2  
Old 06-12-2008
ls -ltr *20080612* | while read binary; do
convertfile.ksh "$binary" | grep -m1 -q "2007" && echo "$binary contains 2007"
done

short for ... | grep -q "2007"; if [ $? -eq 0 ]; then echo "$binary contains 2007"; fi also speed up with "-m1" (or | head -1) because finding one instance is enough.
# 3  
Old 06-12-2008
thank you for the reply!

can you expand on this? please bear with me I'm just learning:

grep -q "2007"; if [ $? -eq 0 ];

-q is option for what again?

[ $? -eq 0 ]; what does this break down to?
# 4  
Old 06-12-2008
Quote:
Originally Posted by llsmr777
thank you for the reply!

can you expand on this? please bear with me I'm just learning:

grep -q "2007"; if [ $? -eq 0 ];

-q is option for what again?

[ $? -eq 0 ]; what does this break down to?
The man pages are your friends. Try
Code:
man grep

Specifically, in this case it means to be quiet. No output will be produced- the default is to print to the screen what grep finds. In your case, you don't want to see what it found, you just want to know what it found, and report it. The -q option is perfect for that.

Regardless, grep exits with a code. If it finds something, it exits with code 0 (which perhaps paradoxically means "success" in UNIX shell-land). That number is put into the "$?" variable. Also, the [ is the shell command "test". So
Code:
[ $? -eq 0 ]

means "Test the $? variable and see if it's equal to 0". If so, the test command will exit with code 0 (success). The "if" command checks the exit code of the command it is given- in this instance, the "test" command. So if the test is successful, then do the "then" clause.
-mschwage
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Need small modification in script

Hi All, In the below script, I am calling one sql file test.sql If this file returns any data then I have to generate this file test_$RUN_DATE.FCNA If the sql files returns no data then I dont want to generate this file test_$RUN_DATE.FCNA. I tried one approach like: check the size of FCNA files... (1 Reply)
Discussion started by: praveenk768
1 Replies

2. UNIX for Dummies Questions & Answers

Extremely slow file writing with many small files on mounted NAS

I am working on a CentOS release 6.4 server which has two mounted NAS devices, one with 20 x 3TB HDD running in FreeBSD with Zfs2 and one NAS which I don't know much about, but which has 7 HDDs in RAID-6. I was running tar -zxvf on a tarball that is 80Mb with 50,000 small files inside. Even... (4 Replies)
Discussion started by: TupTupBoom
4 Replies

3. UNIX for Dummies Questions & Answers

need help with small script

Hi I have the below file Name=abc Yr=2011 Mon=05 My script should be in such a way that whenever I run it then Month should increment by 1 and if the month is 12 then when I run the script then year should incremented by 1 and month Should become 01(I.e jan) Thanks for the help in... (6 Replies)
Discussion started by: kishu
6 Replies

4. AIX

Need help in a small script

Hello all, could somebody help..? I have following 6 files (with white spaces in their names) This is file This is file1 This is file2 This is file3 This is file4 This is file5 This is file6 I tried to run the below script, and it did not give me desired ouput.. $ for i in `ls -1` >... (7 Replies)
Discussion started by: gsabarinath
7 Replies

5. Shell Programming and Scripting

need a small script

Hello all, i have a batmail process running on my machine(java process). i just need a script we should detect whether the batchnail is running or not.If not it should restart it. Can anyone assist me on this? (1 Reply)
Discussion started by: Rayzone
1 Replies

6. Shell Programming and Scripting

small script help

#!/bin/ksh for i in *.log* do ls $i|sed 's/\.log$//g' | while read file do echo "file $file is Running" >> lls.txt echo "***************">> lls.txt done done ------------------------------------------------------------------ the output is : file AdapterCCProvisioningInterface... (9 Replies)
Discussion started by: ali560045
9 Replies

7. Shell Programming and Scripting

Very small Shell Script Help...

The following Script takes each extension and determine what category it belongs and then moves it into a directory based on the extension. (for eg. 1.sh, 5.sh, 9.sh together; 4.csh, 120.csh, 6.csh together and 7.ksh, 2.ksh, 59.ksh together) and moves them to their respective directories viz.... (2 Replies)
Discussion started by: marconi
2 Replies

8. Shell Programming and Scripting

small script

Hi, I am new to unix shell scripting. I just want a little script to check the no. of processes are equal to 8, then echo a successful message otherwise echo a unsuccessful message. Please help. Thanks. (3 Replies)
Discussion started by: everurs789
3 Replies

9. Shell Programming and Scripting

small script help

here is a small script: if ; then echo please enter an argument fi if [ "$1" = "tom"; then a=$1 echo $a fi here is my question. if the script name is j.sh and I run it : j.sh from shell prompt: without a parameter: it prints please enter an argument but if I go with . j.sh (current... (1 Reply)
Discussion started by: rkl1
1 Replies

10. Shell Programming and Scripting

Need help in a small script

Hi all, I have a file of the following format - EXPRPT:SCN:1.1706E+10:SEQ_START:121652:SEQ_END:121664:0 ( This file name is variable and changes daily) Now in the same directory I have another set of files of the format - EXPRPT.log.0001.0000121669 Now what I am trying to do is to ... (2 Replies)
Discussion started by: super_duper_guy
2 Replies
Login or Register to Ask a Question