Sponsored Content
Top Forums Shell Programming and Scripting need a perl replacement for this double for loop Post 302409649 by durden_tyler on Thursday 1st of April 2010 08:43:27 PM
Old 04-01-2010
Quote:
Originally Posted by pseudocoder
...
Code:
arabic/Makefile.inc
chinese/Makefile.inc
french/Makefile.inc
german/Makefile.inc
hebrew/Makefile.inc
hungarian/Makefile.inc
japanese/Makefile.inc
korean/Makefile.inc
polish/Makefile.inc
portuguese/Makefile.inc
russian/Makefile.inc
textproc/p5-Makefile-DOM
textproc/p5-Makefile-Parser
ukrainian/Makefile.inc
vietnamese/Makefile.inc

if you could adjust your one-liner to skip Makefile.inc too, that would be just PERFECT.

...
I don't think I understood your post completely, but here's what I did.
I touch'd the files "Makefile.inc", "p5-Makefile-DOM", "p5-Makefile-Parser" and "p6-Makefile-SAX" so that my find command shows the following -

Code:
$ 
$ find . -name "*"
.
./zz.lis
./accessibility
./accessibility/accerciser
./accessibility/at-spi
./accessibility/Makefile
./accessibility/at-poke
./accessibility/p5-Makefile-Parser
./accessibility/p5-Makefile-DOM
./accessibility/Makefile.inc
./arabic
./arabic/ae_fonts_ttf
./arabic/p6-Makefile-SAX
./arabic/Makefile
./arabic/p5-Makefile-Parser
./arabic/p5-Makefile-DOM
./arabic/ae_fonts_mono
./arabic/Makefile.inc
$ 
$

Now, my previous script would return each file path except the ones that end with "Makefile".
This means that the files "Makefile.inc", "p5-Makefile-DOM", "p5-Makefile-Parser" and "p6-Makefile-SAX" will be present in the output -

Code:
$ 
$ perl -lne 'foreach (glob "$_/*"){print if !/Makefile$/}' zz.lis
accessibility/accerciser
accessibility/at-poke
accessibility/at-spi
accessibility/Makefile.inc
accessibility/p5-Makefile-DOM
accessibility/p5-Makefile-Parser
arabic/ae_fonts_mono
arabic/ae_fonts_ttf
arabic/Makefile.inc
arabic/p5-Makefile-DOM
arabic/p5-Makefile-Parser
arabic/p6-Makefile-SAX
$

The following script skips "Makefile" as well as "Makefile.inc".
But it will still show the other three: "p5-Makefile-DOM", "p5-Makefile-Parser" and "p6-Makefile-SAX" -

Code:
$ 
$ perl -lne 'foreach (glob "$_/*"){print if !/Makefile[.inc]*$/}' zz.lis
accessibility/accerciser
accessibility/at-poke
accessibility/at-spi
accessibility/p5-Makefile-DOM
accessibility/p5-Makefile-Parser
arabic/ae_fonts_mono
arabic/ae_fonts_ttf
arabic/p5-Makefile-DOM
arabic/p5-Makefile-Parser
arabic/p6-Makefile-SAX
$ 
$

Now, I see "p5-Makefile-DOM" and "p5-Makefile-Parser" in the list in your post. But you did not mention anything about them.
Did you want them skipped as well ? Is yes, then -

Code:
$ 
$ 
$ perl -lne 'foreach (glob "$_/*"){print if !/Makefile([.inc]|-(DOM|Parser))*$/}' zz.lis
accessibility/accerciser
accessibility/at-poke
accessibility/at-spi
arabic/ae_fonts_mono
arabic/ae_fonts_ttf
arabic/p6-Makefile-SAX
$ 
$

Note that the regular expression is very restrictive and will exclude only the file paths that either end with "Makefile", or "Makefile.inc", or "Makefile-DOM" or "Makefile-Parser".
Which means the file path ending with "Makefile-SAX" will be included in the output (and you can see that above).
You can, of course, tweak the regular expression further on to remove different types of "Makefile" files.

However, if your actual problem statement is - "Skip all files that have the characters Makefile anywhere in them", then the regular expression could be much simpler -

Code:
$ 
$ 
$ perl -lne 'foreach (glob "$_/*"){print if !/Makefile/}' zz.lis
accessibility/accerciser
accessibility/at-poke
accessibility/at-spi
arabic/ae_fonts_mono
arabic/ae_fonts_ttf
$ 
$

HTH,
tyler_durden
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

String Replacement with Perl

I want to replace a string within a file using perl. We have a line that gets commented out, and I want to replace that line now matter how it was commented out. for example, I'd want to replace ###ES=PR1A with ES=PR1A or ##LJW(9/16/26)ES=PR1A with ES=PR1A I tried: perl... (4 Replies)
Discussion started by: Lindarella
4 Replies

2. Shell Programming and Scripting

Replacement of sed with perl

Hi using the below cmd i am identifying wheether last character in each line in thousands of files as semicolon or not.If last character is semicolon i am removing semicolon .If last character is not semicolon then i am appending next line to present line . For example my input file consists of... (4 Replies)
Discussion started by: dbsurf
4 Replies

3. Shell Programming and Scripting

Replacement for eval in Perl??????

I used the eval command in shell programming for assigning a value to a stored value of a variable. Example: VAR="Unix_Id" eval $VAR="101" eval echo $"$VAR" How can i assign a value to a stored value of a variable in perl OR how i can write above code in Perl? I need your help... (4 Replies)
Discussion started by: kunal_dixit
4 Replies

4. Shell Programming and Scripting

perl as awk replacement in a script.

Hey all, Im trying to write a script on windows, which Im not too familiar with. Im generally a bash scripting guy but am using perl for this case. My question is... I have this exact output: 2 Dir(s) 6,380,429,312 bytes free and I just need to get the number out... (4 Replies)
Discussion started by: trey85stang
4 Replies

5. Shell Programming and Scripting

Replacement of sentence in perl

Hi, I have 3 arrays: @arr1=("Furthermore, apigenin treatment increased the level of association of the RNA binding protein HuR with endogenous p53 mRNA","one of the mechanisms by which apigenin induces p53 protein expression is enhancement of translation through the RNA binding protein... (1 Reply)
Discussion started by: vanitham
1 Replies

6. Shell Programming and Scripting

HELP Need in SED/PERL conditional line replacement

Hi , I need some help on perl/sed conditional replacement The situation is like below . I have a file contents like below . AAA|BBB|CCC|DDD AAA|BCF|CCC|HHH AAA|BVF|JJJ|KKK Here in the above file . I know my second column value (taking "|" as my delimited ) Basically I have to... (3 Replies)
Discussion started by: robin.r888
3 Replies

7. Shell Programming and Scripting

Perl Array Elements Replacement

Hello, I have the following perl array: @longname = (Fasthernet0/0 Fasthernet0/1 Serial0/1/0 Serial0/2/1 Tunnel55 Tunnel77) with the followinh array: @shortname = (Fa0/0 Fa0/1 Se0/1/0 Se0/2/1 Tu55 Tu77) in other words, I need to remove the following from each element in the array... (4 Replies)
Discussion started by: ahmed_zaher
4 Replies

8. Shell Programming and Scripting

Word replacement in Perl

I have the following string : Cat dog fox catepillar bear foxy I need to replace "cat" and "fox" words from this sentence to word "animal" I do the following: $Str1="cat"; $Str2="fox"; $NewStr="animal"; open(F1, "<$inputFile") or die "Error: $!"; open(F2, ">$outputFile") or... (1 Reply)
Discussion started by: AIX_30
1 Replies

9. Shell Programming and Scripting

Perl String Replacement Syntax Question . . .

Greetings! I've been tooling about with Perl to make a few string replacements in some files; and seem to have run into a bit of a squeeze :) Beginning with a simple text file, test.txt, we have the following content to be worked:Now, not wanting to have anyone feel left out, I decided that... (6 Replies)
Discussion started by: LinQ
6 Replies

10. Shell Programming and Scripting

Perl:: mass replacement of converting C code formats to tgmath.h

hello, i have a lot of C old code I'm updating to C11 with tgmath.h for generic math. the old code has very specific types, real and complex, like cabsl, csinhl, etc usually for simple bulk replacements i would do something simple like this perl -pi -e 's/cosl/cos/g' *.c the reference... (0 Replies)
Discussion started by: f77hack
0 Replies
All times are GMT -4. The time now is 05:46 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy