Getting the lines that contains a '/' N times(N given at runtime)


 
Thread Tools Search this Thread
Operating Systems HP-UX Getting the lines that contains a '/' N times(N given at runtime)
# 1  
Old 08-06-2013
Getting the lines that contains a '/' N times(N given at runtime)

Hi all,

The task I have sounds easy enough but my solution seems too much complicated and I would like some ideas/feedback on how to achieve the same goal with a more elegant solution on HP-UX B.11.23 (a grep with a regexp would be nice, I did not manage to do a working one :/ )

Here is my problem, I have a list of dirname as input and I need to return only the ones that have the depth required (given at runtime)

How I have achieved this so far, please note that the "find . -type d" is just to give you a working example, input will be a flat file and nb_wanted will be set at runtime (here it is set to 2, +1 for the carriage return character):

Code:
find . -type d   | awk   -v nb_wanted=3 '{ whole_line=$0; cmd="echo \""$0"\" | sed \"s/[^\/]//g\" | wc -c " ; cmd|getline; nb_returned=$0; close(cmd); if (nb_returned==nb_wanted) print whole_line ; }'

This solution is pretty slow too :/ Any pointer to a more effective solution would be appreciated.

Matt
# 2  
Old 08-06-2013
GNU find is fast and easy
Code:
find . -type d -mindepth 2 -maxdepth 2

Standard find (can be further optimized)
Code:
find . -type d | awk -F"/" 'NF==3'

Since you have a file already, go for the awk solution! In this simple case you can omit the quotes:
Code:
awk -F/ NF==3


Last edited by MadeInGermany; 08-06-2013 at 01:33 PM..
This User Gave Thanks to MadeInGermany For This Post:
# 3  
Old 08-06-2013
What about this one:
Code:
 find /usr/share -type d |awk '{n=gsub (/\//, "&")} n>10'

# 4  
Old 08-06-2013
I agree that GNU has the -maxdepth but as I said, input is a flat file and HP-UX's find does not support the -maxdepth option Smilie

The gsub does not seem to do the trick :/

Anyway, the solution of MadeInGermany

Code:
find . -type d | awk -F"/" 'NF==3'

is an eye-candy compared to the mess I was using.

Thanks all.
# 5  
Old 08-06-2013
You of course have to adapt to your needs, e.g. n==3 or n==2...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove duplicate lines which has been repeated 4 times

Remove duplicate lines which has been repeated 4 times attached test.txt below command tried and not getting expect output. for i in `cat test.txt | uniq` do num=`cat test.txt | grep $i | wc -l` echo $i $num done test.txt ... (17 Replies)
Discussion started by: Kalia
17 Replies

2. UNIX for Beginners Questions & Answers

Export lines that have first entry repeated 5 times or above

Dears i want to extract lines only that have first entry repeated 3 times or above , ex data : -bash-3.00$ cat INTCONT-IS.CSV M205-00-106_AMDRN:1-0-6-22,12-662-4833,intContact,2016-11-15 02:32:16,50 M205-00-106_AMDRN:1-0-23-17,12-616-0462,intContact,2016-11-15 02:32:23,50... (5 Replies)
Discussion started by: is2_egypt
5 Replies

3. Shell Programming and Scripting

Count same word which has come many times in single lines & pars

can i get a simple script for , Count same word which has come many times in single lines & pars Eg file would be == "Thanks heman thanks thanks Thanks heman thanks man" So resullt should be Thanks = 5 heman=2 man = 1 thanks in advance :) Please use code tags for code and... (1 Reply)
Discussion started by: heman96
1 Replies

4. Shell Programming and Scripting

How to print the lines which are repeated 3 times in a file?

Hello All, I have a file which has repeated lines. I want to print the lines which are repeated three times. Please help. (3 Replies)
Discussion started by: ailnilanjan
3 Replies

5. Shell Programming and Scripting

awk to find lines containing word that occur multiple times

i have a script that scans a log file every 10 minutes. this script remembers the last line of the log and then uses it to continue monitoring the log when it runs again 10 minutes later. the script searches the log for a string called MaxClients. now, how can i make it so that when the... (7 Replies)
Discussion started by: SkySmart
7 Replies

6. UNIX for Dummies Questions & Answers

How to copy set of lines n times?

I have a file with following data A B C I would like to print like this n times(For eg:n times) A B C A B C A B C A B C A (3 Replies)
Discussion started by: nsuresh316
3 Replies

7. UNIX for Dummies Questions & Answers

Extracting data between specific lines, multiple times

I need help extracting specific lines in a text file. The file looks like this: POSITION TOTAL-FORCE (eV/Angst) ----------------------------------------------------------------------------------- 1.86126 1.86973 1.86972 ... (14 Replies)
Discussion started by: captainalright
14 Replies

8. Shell Programming and Scripting

Sed or Awk for lines between two strings multiple times and keep the last one

Hi, I am trying to get lines between the last occurrences of two patterns. I have files that have several occurrences of “Standard” and “Visual”. I will like to get the lines between “Standard” and “Visual” but I only want to retain only the last one e.g. Standard Some words Some words Some... (4 Replies)
Discussion started by: damanidada
4 Replies

9. Shell Programming and Scripting

AWK Duplicate lines multiple times based on a calculated value

Hi, I'm trying to create an XML sitemap of our dynamic ecommerce sites SEO Friendly URLs and am trying to create the initial page listing. I have a CSV file that looks like the following and need duplicate the lines based on a value which needs calculating. ... (2 Replies)
Discussion started by: jamesfx
2 Replies

10. AIX

grep to give how many times each lines were found

Lets say I have a file containing string patterns to be looked for inside a file. I would normaly do : grep -if MyFilePattern FiletoSearchInto if I use the -c it gives how many total lines it found out of my whole pattern file, but what if i want grep to report how many times it found each... (4 Replies)
Discussion started by: Browser_ice
4 Replies
Login or Register to Ask a Question