Script Help/Advice


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script Help/Advice
# 8  
Old 10-11-2007
Code:
 awk '/ :/{printf "%s-%s-%s\n%s:%s\n",$4,$5,$6,$7,$8;next}
/--/{print;next}
{FS="[-/:]";print $7}'  FS="[-/:]"

Code:
% cat file
--
/home/dir1/file-egress-filter-Remark : Stuff
/home/dir1/file-egress-filter-permit stuff
/home/dir1/file-egress-filter-permit other stuff
/home/dir1/file-egress-filter:permit more stuff
--
/home/dir1/other-egress-filter-Remark : Other
/home/dir1/other-egress-filter-permit other
/home/dir1/other-egress-filter-permit other others
/home/dir1/other-egress-filter:permit more other
--
% awk '/ :/{printf "%s-%s-%s\n%s:%s\n",$4,$5,$6,$7,$8;next}
/--/{print;next}
{FS="[-/:]";print $7}'  FS="[-/:]" file
--
file-egress-filter
Remark : Stuff
permit stuff
permit other stuff
permit more stuff
--
other-egress-filter
Remark : Other
permit other
permit other others
permit more other
--

Use nawk or /usr/xpg4/bin/awk on Solaris.

Last edited by radoulov; 10-11-2007 at 01:10 PM.. Reason: correction/addition: just saw you wanted the blanks ...
# 9  
Old 10-11-2007
radoulov,
given a sample input with 'blanks'
Code:
--
/home/dir1/file-egress-filter-Remark : Stuff
/home/dir1/file-egress-filter-permit stuff
/home/dir1/file-egress-filter-
/home/dir1/file-egress-filter-permit other stuff
/home/dir1/file-egress-filter-
/home/dir1/file-egress-filter:permit more stuff
--
/home/dir1/other-egress-filter-
/home/dir1/other-egress-filter-Remark : Other
/home/dir1/other-egress-filter-permit other
/home/dir1/other-egress-filter-
/home/dir1/other-egress-filter-permit other others
/home/dir1/other-egress-filter:permit more other
--

the output is:
Code:
--
file-egress-filter
Remark : Stuff
permit stuff

permit other stuff

permit more stuff
--

other-egress-filter
Remark : Other
permit other

permit other others
permit more other
--

the 'header' in the SECOND block is AFTER the first blank line - while I believe it should be first.
I like the solution, but don't really like explicitely referencing field numbers - kinda ties you up to a particular number and the 'depths' of the patterns/paths - I believe using 'match' and regex makes it more 'generic'.
# 10  
Old 10-11-2007
Quote:
Originally Posted by vgersh99
radoulov,
[...]
I like the solution, but don't really like explicitely referencing field numbers - kinda ties you up to a particular number and the 'depths' of the patterns/paths - I believe using 'match' and regex makes it more 'generic'.
Yes,
I agree, more explicit referencing -> less flexible code.
I would only suggest an approach like mine for fixed formats.
# 11  
Old 10-11-2007
Thanks for the replies guys... good stuff to learn.

Seems to be an issue in processing this line:
Code:
/home/dir1/file-egress-filter-Remark : Stuff

It's removing the word Remark and just printing everything after the : so the output is
Code:
 Stuff

when it should be:
Code:
Remark : Stuff

# 12  
Old 10-11-2007
everything is kosher here - no 'drops' given the sample file with 'blanks'.
Paste your sample file once again.
# 13  
Old 10-11-2007
Quote:
Originally Posted by vgersh99
everything is kosher here - no 'drops' given the sample file with 'blanks'.
Paste your sample file once again.
Each block will follow a format similar to this:
Code:
--
/home/dir1/file-egress-filter-Remark : Stuff
/home/dir1/file-egress-filter-permit stuff
/home/dir1/file-egress-filter-
/home/dir1/file-egress-filter-Remark : Other Stuff
/home/dir1/file-egress-filter:permit other stuff
--

I guess the things to consider are that the filename is delimited from the text with a - on all but the last line in which case it's a :. Also, lines within the block can contain a : on more than one occasion and need to be retained. Then also, the "blank" line issue where it lists just the file name.

On the above example we would want:
Code:
file-egress-filter
Remark : Stuff
permit stuff

Remark : Other Stuff
permit other stuff

Thanks again for your help...
# 14  
Old 10-11-2007
Assuming that the 'something:other' is to be treated differently than 'something : other'
Code:
BEGIN {
  FS="[/]"
}
/^--/ {block++;print;next}
block {
  match($NF, "^.*-.*-[^-][^-]*-")
  printf("%s\n", substr($NF, 1, RLENGTH-1))
}
!match($NF, "-[^-][^-]*$") {print "";next }
{
  ($0 ~ "[^ ]:[^ ]") ? match($NF, ":[^:][^:]*$") :  match($NF, "-[^-][^-]*$")
  printf("%s\n", substr($NF, RSTART+1))
  block=0
}


Last edited by vgersh99; 10-11-2007 at 03:20 PM.. Reason: fixes...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Advice on a backup script, maybe one is out there already?

Hi, Not sure whether this is the right place to post it. I decided to post it here 'coz Advanced and Expert users will most likely have the answer to what I am looking for. I want to backup scripts that I have access to to a tar file file and zip it. At the moment I am creating a directory... (4 Replies)
Discussion started by: newbie_01
4 Replies

2. Shell Programming and Scripting

Script advice

All I have 2 parent directories - input and output. Each parent has multiple sub-directories...each sub-directory has multiple files. Each parent directory structure is a mirror image of itself I need to poll the imput directory and if a new file is found, encrypt the file, move the file to... (2 Replies)
Discussion started by: davidra
2 Replies

3. Shell Programming and Scripting

Need advice on approach for script

Greetings all. I have a repository server which receives, without exhaggeration, several million files a week. The majority of these files are in .csv format, which means they're highly compressable. They are spread throughout numerous directories where there are configured monitoring utilities... (4 Replies)
Discussion started by: msarro
4 Replies

4. Shell Programming and Scripting

Advice on script

Hi folks, I use following script:- #!/bin/sh # cd Linbread TODAY=`date +"%m%d"` DATA=`grep $TODAY linbread.dat` HOUR=`date +"%H"` if then TOD="Morning" elif then TOD="Afternoon" else TOD="Evening" fi echo $DATA | gawk -F"|" '{printf("%s\n\n%s",$2,$3)}' > $$tmp fold -s -w60... (0 Replies)
Discussion started by: satimis
0 Replies

5. Shell Programming and Scripting

Looking for optimization advice on a short script

I already have a solution to my problem, but I'm looking to see if it can be made more succinct and faster. The problem: given a list, as shown below, extract the pathname for any file in a directory named 'ample' and return it's index into the list. The index is also in the data itself. Note that... (1 Reply)
Discussion started by: prigo
1 Replies

6. Shell Programming and Scripting

advice on shell script

Hello, I have this script running on cron every 20 minutes. By 12pm daily, our system is expecting all input files to be uploaded by the script. After this cutoff time, the script would still be running though, but i need some kind of alerts/logs to know which input files weren't received for... (1 Reply)
Discussion started by: gholdbhurg
1 Replies

7. Shell Programming and Scripting

Script Advice please?

Ok. I want to parse a log file and search only for denied traffic for the previous hour. The log looks like this: Jun 18 17:47:56 routername 36806: Jun 18 17:53:01.088: %SEC-6-IPACCESSLOG: list ingress-filter denied tcp 1.2.3.4(1234) -> 6.7.8.9(53), 4 packets I only really care about the... (12 Replies)
Discussion started by: earnstaf
12 Replies

8. Shell Programming and Scripting

Advice on Script

I would like some advice on how to logically put together a script to handle a daily task of data gathering for the following problem. I have two files, file1 has 125,000 records that I cut and remove unwanted fields through scripts and cron. In file2, I have 25000 records that has the same... (4 Replies)
Discussion started by: greengrass
4 Replies

9. Shell Programming and Scripting

first script. need help and advice.

Hello everyone, This is my first post here and this is the first time I am using UNIX OS (Slackware). I find it really useful and powerful and would like to master it but as you may guess I am expreicing quite a few problems. I've been reading a few documentations about it and bash this week... (17 Replies)
Discussion started by: sanchopansa
17 Replies

10. Shell Programming and Scripting

c-shell script advice please.

Hi, I have the following script running in my cron. -------------------------------------------------------------------- #!/bin/csh bnstat -p GPD_VSLinux | grep pg | grep varcon | awk '{print $1, $2, $3, $4, $5, $6, $7, $8, $9, $10}' > /tmp/LX_xbatch.log bnstat -p GPD_VSLinux_test | grep pg... (2 Replies)
Discussion started by: killerserv
2 Replies
Login or Register to Ask a Question