Parse Directory path - awk


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Parse Directory path - awk
# 1  
Parse Directory path - awk

Hi All,

Need some help in parsing a directory listing .. output into 2 files

Input file
Code:
level1,/level2/level3/level4/ora001,10,IBB23 
level1,/level2/level3/level4/ora001/blu1,,IBB23 
level1,/level2/level3/level4/ora001/clu1,,IBB23 
level1,/level2/level3/level4/ora002,,IBB24
level1,/level2/level3/level4/ora002/bbu1,20,IBB24
level1,/level2/level3/level4/ora002/ccu1,20,IBB24
level1,/level2/level3/level4/ora003,4,IBB25
level1,/level2/level3/level4/ora003/ddu1,,
level1,/level2/level3/level4/ora004/ttu1,4,IBB25
level1,/level2/level3/level4/ora004/rru1,5,IBB25
level1,/level2/level3/level4/ora005/yyu1,5,IBB25



Output

File1
Code:
level1,/level2/level3/level4/ora001,10,IBB23 
level1,/level2/level3/level4/ora002/bbu1,20,IBB24
level1,/level2/level3/level4/ora002/ccu1,20,IBB24
level1,/level2/level3/level4/ora004/ttu1,4,IBB25
level1,/level2/level3/level4/ora004/rru1,5,IBB25
level1,/level2/level3/level4/ora005/yyu1,5,IBB25



File2

Code:
level1,/level2/level3/level4/ora003,4,IBB25
level1,/level2/level3/leve4/ora003/ddu1,,



Logic 1
rows where $2 has the same path upto 4 dir levels and $4 is same is one sub group . , for example

Code:
level1,/level1/level2/level3/ora001,10,IBB23 
level1,/level1/level2/level3/ora001/blu1,,IBB23 
level1,/level1/level2/level3/ora001/clu1,,IBB23



When the above is true , copy the line(s) where $3 field is not empty to file 1 , rest of the sub group can be discarded
and if $3 is empty for all the lines in sub group . , copy all the lines in subgroup to file2


Logic2

for rows where $2 has the same path upto 4 dir levels , but $4 is not same or empty ,copy the line(s) to file 2
Any line(s) with unique $2 for 4 dir levels , but with $3 and $4 not empty will go to file 1 as well

Rest of the lines which do not match to above 2 criteria will go to file2 as well

Thanks

Last edited by vgersh99; 10-09-2019 at 11:36 AM.. Reason: code tags, please!
# 2  
Any attempt / idea / thought from your side?


I can't see your logics example comply to your specification - none of those $2 values represent the "same path upto 5 dir levels". The first entry has four levels only, the next two have five but are different. Please revise your spec / example.
# 3  
Thx ...

my bad ... i edited the question ..
# 4  
What about your own approach to solve the problem?
# 5  
Hi ,

I have only tried basic shell looping .. if then else stuff ... was looking for something more efficient as there are more than 20,000 lines


Thanks
# 6  
Why does

Code:
level1,/level2/level3/level4/ora003,4,IBB25

show up in file2?
# 7  
Hi ..

Code:
level1,/level2/level3/level4/ora003,4,IBB25
level1,/level2/level3/level4/ora003/ddu1,,

In this case ... $4 is not same ... so both lines get copied to file2

Last edited by vgersh99; 10-09-2019 at 11:37 AM.. Reason: code tags, please!
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #1
Difficulty: Medium
The UNIX and Linux Forums (UNIX.com) was founded in 1985.
True or False?

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Variable of Path directory is not parsing in awk

Hi All, i had to split one files into 10 equally. For that i have coded below awk. OUTPUT_FILE=/home/sit/path/Files/file_EXPORT.lst DIR_NM=`dirname ${OUTPUT_FILE}` awk -v CURR_DATE="$(date +'%d-%m-%Y-%H-%M')" -v pth=$DIR_NM '{print >> pth/"tgt_file_name"CURR_DATE"_"NR%10 }' ${OUTPUT_FILE} ... (7 Replies)
Discussion started by: looney
7 Replies

2. UNIX for Dummies Questions & Answers

Extract directory name from the full directory path in UNIX using shell scripting

My input is as below : /splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt /splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt /splunk/scrubbed/loyal/IFIND.HELLO.WROC.txt /splunk/scrubbed/triumph/ifind.triumph.txt From the above input I want to extract the file names only . Basically I want to... (5 Replies)
Discussion started by: IshuGupta
5 Replies

3. Shell Programming and Scripting

Parse output path to set variable

I am looking to parse a text file output and set variables based on what is cropped from the parsing. Below is my script I am looking to add this feature too. All it does is scan a certain area of users directories for anyone using up more than X amount of disk space. It then writes to the... (4 Replies)
Discussion started by: es760
4 Replies

4. Shell Programming and Scripting

Parse file name out of UNC path

Hello, I searched the forums and didn't see a situation like this: I cannot figure out how to parse out just the file name from the full path. The path looks like this: \\foo\bar\filename.ext I don't think something like 'cut' will work so I tried to whip up a regex but couldn't get it... (12 Replies)
Discussion started by: bytesnoop
12 Replies

5. Shell Programming and Scripting

sed/awk for extracting directory from file path

Hi, I have following path: set file_path = D:/forums/prac/somedir/new1/file1.txt or set file_path = E:/new/forums1/prac/somedir/new2/file2.txt I need to grep "somedir" from file path. In this case preceding directory "prac" remains same for both the paths, but directories preceding... (7 Replies)
Discussion started by: sarbjit
7 Replies

6. Shell Programming and Scripting

How to parse filename and one level up directory name?

Hello Experts, I need little help with parsing. I want to parse filename and one level up directory name. sample $1 will consists of /home/username/ABC1/rstfiles4.log /home/username/ABC4/rstfiles2.log /home/username/EDC7/rstfiles23.log /home/username/EDC6/rstfiles55.log... (8 Replies)
Discussion started by: Shirisha
8 Replies

7. Shell Programming and Scripting

Retrieve directory path from full file path through sh

Hi, I have a file abcd.txt which has contents in the form of full path file names i.e. $home> vi abcd.txt /a/b/c/r1.txt /q/w/e/r2.txt /z/x/c/r3.txt Now I want to retrieve only the directory path name for each row i.e /a/b/c/ /q/w/e/ How to get the same through shell script?... (7 Replies)
Discussion started by: royzlife
7 Replies

8. UNIX for Dummies Questions & Answers

awk to parse a directory name?

Hi, I have a directory file name: /auto/space/user/jen/CED/CED_01MZ/visit1/DCE_2eco/016/echo1 I would like to just get the following outputs into variables such that: variable1 = /auto/space/user/jen/CED/CED_01MZ/visit1/ and variable2 = DCE_2eco/016/echo1 I've tried it with... (2 Replies)
Discussion started by: nixjennings
2 Replies

9. Shell Programming and Scripting

Parse value from multiple row to create the path

Hi all, Hope all the expert can help me in this situation. Let say I have one file with multiple record like below: NAME=FRAGMENT LANGUAGE=1 DIALECT=0 GENDER=NONE FILE=TEST1 DIRECTORY=D:/DETAILS/1/0/test1.txt END NAME=FRAGMENT LANGUAGE=1 DIALECT=0 GENDER=NONE (13 Replies)
Discussion started by: shirleyeow
13 Replies

Featured Tech Videos