RE: Unix Scripting Question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The scipt was the command line shown below.

 

I have received a suggestion from Chris P. (THANKS, Chris) to use the perl script shown below - the problem is that my a.lst as used for input is formatted like this:

"/path/to/file/file name.doc"                                

"/path/to/file/file name.doc"                                 

"/path/to/file/file name.doc"                                

"/path/to/file/file name.doc"                                

"/path/to/file/file name.doc"                                 

 

 

The problem with my a.lst is that after the closing ", there may or may not be trailing white space.  If there is, it's not allowing the match, and therefore the compare fails.

 

 

Any ideas how to get perl to ignore white space after the closing " or how I can strip this off the end.  (BUT NOT OUT OF THE MIDDLE - some of my file names in the a.lst are file ::SPACE:: ::SPACE:: :SPACE:: name.doc - or similar.

 

 

Thanks,

M

 

 

 

Chris' script here:

#!/usr/bin/perl

 

$a = '/export/home/oracle/a.lst';

open(FILE, $a) or die "Can't open file: $!\n";

@lines = <FILE>;

close FILE;

 

$exists = '/export/home/oracle/exists.txt';

open(EXISTS, ">$exists") or die "Couldn't open exists.txt for writing: $!\n";

 

$nonexist = '/export/home/oracle/nonexist.txt';

open(NONEXIST, ">$nonexist") or die "Couldn't open nonexists.txt for

writing: $!\n";

 

foreach (@lines) {

  $_ =~ s/"//g;

  chomp;

  if (-e $_) {

    print "$_ exists\n";

    print EXISTS "$_\n";

  } else {

    print "$_ doesn't exist\n";

    print NONEXIST "$_\n";

  }

}

 

close EXISTS;

close NONEXISTS;

 

 

-----Original Message-----
From: redhat-list-bounces@xxxxxxxxxx [mailto:redhat-list-bounces@xxxxxxxxxx] On Behalf Of Dege, Robert C.
Sent: Tuesday, May 04, 2004 11:34 AM
To: 'General Red Hat Linux discussion list'
Subject: RE: Unix Scripting Question

 

Can you post your script?

-----Original Message-----
From: Cupp Michael E Contr AFRL/DIB [mailto:Michael.Cupp@xxxxxxxxxxxx]
Sent: Tuesday, May 04, 2004 11:03 AM
To: 'General Red Hat Linux discussion list'
Subject: RE: Unix Scripting Question

Still no luck -

 

servername $for foo in `cat bb.lst` ^Jdo^Jecho $foo^Jdone

"/apps/htdocs/afrl/EBS/microsite/8583/COF\

Summary\

Apr03\

v2_2.ppt"

"/apps/htdocs/afrl/EBS/microsite/8583/Century\

of\

Flight\

\

Award\

-\

15Jan03_1.ppt"

servername $cat bb.lst

"/apps/htdocs/afrl/EBS/microsite/8583/COF\ Summary\ Apr03\ v2_2.ppt"

"/apps/htdocs/afrl/EBS/microsite/8583/Century\ of\ Flight\ \ Award\ -\ 15Jan03_1.ppt"

 

-----Original Message-----
From: redhat-list-bounces@xxxxxxxxxx [mailto:redhat-list-bounces@xxxxxxxxxx] On Behalf Of Dege, Robert C.
Sent: Tuesday, May 04, 2004 10:56 AM
To: 'General Red Hat Linux discussion list'
Subject: RE: Unix Scripting Question

 

Using sed, you first need to escape the space, and then escape the back-slash.

 

(in vi)

 

:%s/\ /\\\ /g

 

-Rob

-----Original Message-----
From: Cupp Michael E Contr AFRL/DIB [mailto:Michael.Cupp@xxxxxxxxxxxx]
Sent: Tuesday, May 04, 2004 10:51 AM
To: 'General Red Hat Linux discussion list'
Subject: RE: Unix Scripting Question

How would I do that - :g/ /s/\ /g doesn't seem to work.

 

 

-----Original Message-----
From: redhat-list-bounces@xxxxxxxxxx [mailto:redhat-list-bounces@xxxxxxxxxx] On Behalf Of Dege, Robert C.
Sent: Tuesday, May 04, 2004 10:41 AM
To: 'General Red Hat Linux discussion list'
Subject: RE: Unix Scripting Question

 

Your problem could be that you need to escape the spaces in the file names prior to running your test.

 

Modify your a.lst file & replace all spaces ' ' with slash space '\ '

 

-Rob

-----Original Message-----
From: Cupp Michael E Contr AFRL/DIB [mailto:Michael.Cupp@xxxxxxxxxxxx]
Sent: Tuesday, May 04, 2004 10:26 AM
To: 'redhat-list@xxxxxxxxxx'
Subject: Unix Scripting Question

I have a file (a.lst) that has a list of fully pathed filenames, 1 per line - in this format:

"/path/to/the/name_of_file.doc"
"/path/to/the/other/name of the doc noting spaces.doc"

I need to know how I can loop through this file, a.lst, and for each entry, perform a test -s on it. If it exists, I want to put the entry into exists.txt, if it does not, I want to put the entry in noexist.txt -

Can someone please help me? (I've tried for foo in `cat a.lst`, but due to the spaces in 90% of the filenames, it pukes, as it appears to be using space as the delimiter)


Thanks again,
Michael

 

Attachment: image001.gif
Description: GIF image

-- 
redhat-list mailing list
unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/redhat-list

[Index of Archives]     [CentOS]     [Kernel Development]     [PAM]     [Fedora Users]     [Red Hat Development]     [Big List of Linux Books]     [Linux Admin]     [Gimp]     [Asterisk PBX]     [Yosemite News]     [Red Hat Crash Utility]


  Powered by Linux