Visit Our UNIX and Linux User Community


awk/sed line parsing


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk/sed line parsing
# 1  
Old 06-13-2011
awk/sed line parsing

I'm new to shell programming, but I think I learn best by following an example. I'm trying to cook up an awk/sed script, but I obviously lack the required syntax skills to achieve it. The output that I get from running my ksh script looks like this:

Quote:
CHANGED FILES:
1. foo/bar.txt
2. foo/bar1.txt

NEW FILES:
1.foo/bar1.txt

DIRECTORIES:
1. foo/
I need to search each numbered line for certain keywords. If I have no match, then simply continue with the rest of my script. If there are matches, then I want to be able to capture matched lines (to a temp file?) then report the matched lines as the command's output ('cat' temp file?) and exit my script. Appreciate any suggestions.

---------- Post updated at 06:38 AM ---------- Previous update was at 06:20 AM ----------

A bit more details of my framework:

Code:
( ksh myscript.ksh 2>&1 ) | tee -a $TEMP_LOG
            perl -ne "exit 1 if ( \
                /keyword1/ || \
                /keyword2/ || \
                /keyword3/ \
            );" $TEMP_LOG
            if [ $? -eq 1 ]
            then
                echo ""
                echo "Error while running myscript.sh!"
                EXITCODE=1
            else
                echo "Done running myscript.sh."
            fi
            rm -f $TEMP_LOG

So I basically want to be able to capture the keywords from the output of another command shown above and then error out along with reporting the lines with found keywords.
# 2  
Old 06-13-2011
You should code the error handling and output generation directly inside myscript.ksh insead of creating another script that parse its output afterward.
# 3  
Old 06-14-2011
Quote:
Originally Posted by ctsgnb
You should code the error handling and output generation directly inside myscript.ksh insead of creating another script that parse its output afterward.
Agreed. I will incorporate my error checking within myscript.sh. Meanwhile any suggestions on writing the awk code to filter out the keywords? In the output example above I want to be able to read between the CHANGED FILES: line and the next blank line. Then again between the NEW FILES: line and the next blank line, etc.
# 4  
Old 06-14-2011
Give more clue about how does your initial input file look like (upload it if necessary), and how should the output look like.
.
# 5  
Old 06-14-2011
This is the output of a tool command that I run :

Quote:
CHANGED FILES:
1. foo/bar.txt
2. foo/bar1.txt

NEW FILES:
1.foo/bar1.txt

DIRECTORIES:
1. foo/
The flow should be like this: I run an external tool command and I parse its output for certain keywords. If there's a match of keywords, then I want to spit out a message saying that the script cannot proceed any further due to the keyword matches and then spit out the matched lines. If there are no matches, however, then I want my external script to continue on.
I want to be able to parse the output like the one above and catch certain words, such as 'bar.txt' or 'foo/'. If I do have the matches, I'd like to say something like this:

Your request cannot proceed because you had the following critical changes:

... then list the captured matches as a whole line ...
# 6  
Old 06-14-2011
Is "grep" not enough for your requirement?
# 7  
Old 06-14-2011
Quote:
Originally Posted by panyam
Is "grep" not enough for your requirement?
I need to capture and list each line that contains a matching keyword. I think grep will handle only one case form the output, no?

Previous Thread | Next Thread
Test Your Knowledge in Computers #553
Difficulty: Medium
The standard input (stdin for short), standard output (stdout) and standard error (stderr) are three standard communication streams that are defined by most computer systems.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Interesting awk/Perl/sed parsing challenge

I have a log with entries like: out/target/product/imx53_smd/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/bindings/V8HTMLVideoElement.cpp : target thumb C++: libwebcore <=... (8 Replies)
Discussion started by: glev2005
8 Replies

2. UNIX for Advanced & Expert Users

Parsing through a file with awk/sed

I don't necessary have a problem, as I have a solution. It is just that there may be a better solution. GOAL: Part one: Parse data from a file using the "\" as a delimiter and extracting only the last delimiter. Part two: Parse same file and extract everything but the last delimited item. ... (8 Replies)
Discussion started by: OrangeYaGlad
8 Replies

3. Shell Programming and Scripting

Parsing with awk or sed

I want to delete corrupt records from a file through awk or sed. Can anyone help me with this Thanks Striker Change subject to a descriptive one, ty. (1 Reply)
Discussion started by: Rahul_us
1 Replies

4. Shell Programming and Scripting

Another parsing line awk or sed problem

Hi, After looking on different forums, I'm still in trouble to parse a parameters line received in KSH. $* is equal to "/AAA:111 /BBB:222 /CCC:333 /DDD:444" I would like to parse it and be able to access anyone from his name in my KSH after. like echo myArray => display 111 ... (1 Reply)
Discussion started by: RickTrader
1 Replies

5. Shell Programming and Scripting

Line Parsing using sed and awk

Hi Guys, I need help with processing data in a file, line by line. My file test.txt has X_Building_X5946/X0 BUT/U_msp/RdBuMon_d2_B_00 BUT/U_msp/FfRmDaMix_d2_Pi3 Test_Long xp=849.416 yp=245.82 xn=849.488 yn=245.82 w=0.476 l=0.072 fault_layer="Al_T01_Mod" $ $X=849416 $Y=245582... (2 Replies)
Discussion started by: naveen@
2 Replies

6. Shell Programming and Scripting

String parsing with awk/sed/?

If I have a string that has some name followed by an ID#(ex.B123456) followed by some more #'s and/or letters, would it be possible to just grab the ID portion of this string? If so how? I am pretty new with these text tools so any help is appreciated. Example: "Name_One-B123456A-12348A" (2 Replies)
Discussion started by: airon23bball
2 Replies

7. Shell Programming and Scripting

awk/sed for parsing file

Hi All, I have a log file like this E Mon Oct 06 00:17:08 2008 xxx2 cm:10614 fm_pi2_svc_iptv_purchase.c:149 1:pin_deferred_act:10601:11:169:1223245028:16 pi2_op_svc_iptv_purchase error <location=PIN_ERRLOC_FM:5 class=PIN_ERRCLASS_SYSTEM_DETERMINATE:1... (10 Replies)
Discussion started by: subin_bala
10 Replies

8. Shell Programming and Scripting

Parsing a file (sed/awk?)

Hello people, newbie question. I'm trying to parse these type of file 1 "CAR " " C1 " " " 6 0 C1 2 "CAR " " O1A" " " 8 0 O1A 3 "CAR " " O1B" " " 8 -1 O1B 4 "CAR " " C2 " " " 6 0 C2 5 "CAR " " C3 " " " 6 ... (10 Replies)
Discussion started by: aristegui
10 Replies

9. Shell Programming and Scripting

parsing xml with awk/sed

Hi people!, I need extract from the file (test-file.txt) the values between <context> and </context> tag's , the total are 7 lines,but i can only get 5 or 2 lines!!:confused: Please look my code: #awk '/context/{flag=1} /\/context/{flag=0} !/context/{ if (flag==1) p rint $0; }'... (3 Replies)
Discussion started by: ricgamch
3 Replies

10. Shell Programming and Scripting

awk sed parsing

hi , i would like to parse some file with the fallowing data : data data data "unwanted data" data data "unwanted data" data data data data #unwanted data. what i want it to have any coments between "" and after # to be erased using awk or/and sed. has anyone an idea? thanks. (3 Replies)
Discussion started by: Darsh
3 Replies

Featured Tech Videos