AWK Script Issue insert newline for a regular expression match


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting AWK Script Issue insert newline for a regular expression match
# 8  
Old 11-25-2010
Code:
cat input | sed 's/,  *\([^ ]*RXE\)/,|\1/g' | tr '|' '\n' >ouput

Instead of | ,you could use any character that do not already appear in the input you want to parse.


Code:
# cat input
ROXER , RTOEX , RXERT , RXERY , RXERU
.RAEY(TXBSIM) , .RREU(TXDSIN),  .RXEY(TSTY) , .RXEI(TSTR)
input RXETY
output RXEUI
# cat input | sed 's/,  *\([^ ]*RXE\)/,|\1/g' | tr '|' '\n'
ROXER , RTOEX ,
RXERT ,
RXERY ,
RXERU
.RAEY(TXBSIM) , .RREU(TXDSIN),
.RXEY(TSTY) ,
.RXEI(TSTR)
input RXETY
output RXEUI
#


Last edited by ctsgnb; 11-25-2010 at 02:29 PM..
# 9  
Old 11-25-2010
Network awk issue

Thanks ctgsnb ,

Actually this code worked , I am little new to Sed
Can you explain how this code works , bit of explanation of this Code

Thanks and Regards
Jaita
# 10  
Old 11-25-2010
Quote:
Originally Posted by ctsgnb
Code:
cat input | sed 's/,  *\([^ ]*RXE\)/,|\1/g' | tr '|' '\n' >ouput

You get a Useless Use of Cat Award Smilie Try

Code:
sed 's/,  *\([^ ]*RXE\)/,|\1/g' input | tr '|' '\n' >ouput

# 11  
Old 11-26-2010
Code:
sed 's/,  *\([^ ]*RXE\)/,|\1/g' input | tr '|' '\n'

s means substitution
/separator start of the pattern description to be substituted
, * match coma followed by a space followed by 0 or more space
\( \)delimit a pattern that that we can call later in the replacement part as \1
[^ ]*RXE means any caracter which is not (^) a space repeated 0 or more times (*) followed by RXE
/separator that end the pattern description to be substituted and mark the start of the description of the the string that will replace the pattern to be substituted
,<pipe>\1comas followed by a pipe caracter followed by the pattern previously described as being between the \( \)
/ separator to end the description of the replace string
g means the substitution is global (substitution will occures every time a matching pattern is found even if occure more than once within a same line)
tr '|' '\n' will just replace the pipe caracter by new line

---------- Post updated at 09:43 AM ---------- Previous update was at 09:32 AM ----------

Quote:
Originally Posted by Corona688
Yes i know, it is just because i did copy/paste from my test screen
for my test, i was using trailing sed instead of input, just because i could easily go back and change stuff (for pure test purpose, it was more friendly while fixing the code).

by the way ... at least i did provide a working code Smilie

Last edited by ctsgnb; 11-26-2010 at 06:17 AM..
This User Gave Thanks to ctsgnb For This Post:
# 12  
Old 11-26-2010
If GNU awk avaliable:

Code:
#awk '!/put/{a=gensub(/([\.]*)RXE/,"\n\\1RXE","G");print a;next}{print;}' input 
ROXER , RTOEX , 
RXERT , 
RXERY , 
RXERU
.RAEY(TXBSIM) , .RREU(TXDSIN),  
.RXEY(TSTY) , 
.RXEI(TSTR)
input RXETY
output RXEUI

# 13  
Old 11-28-2010
Thanks ctgsnb ,

Now I am trying the code in a reverse manner but it is not working

Code:
 
FILE1
##################
 
ROXER , RTOEX , RXERT , RXERY , RXERU
.RAEY(TXBSIM) , .RREU(TXDSIN),  .RXEY(TSTY) , .RXEI(TSTR)
RXHMAN, RXADCLK , RXBDCLK , RXCDCLK, RXDDCLK 
.RXTTY(TRYN), .RXHMA(TRNAM)
RXFT, RXHMAN, RXDDN , RXDNR
input RXETY
output RXEUI
#############################

output

Code:
 
###############
 
 
ROXER , RTOEX , RXERT , RXERY , RXERU
.RAEY(TXBSIM) , .RREU(TXDSIN),  .RXEY(TSTY) , .RXEI(TSTR)
RXHMAN, 
RXADCLK , RXBDCLK , RXCDCLK, RXDDCLK 
.RXTTY(TRYN), .RXHMA(TRNAM)
RXFT, RXHMAN, 
RXDDN , RXDNR
input RXETY
output RXEUI

#############################

The matching pattern is RXH whenever the script will see RXH** and the , it should insert a newline

Code:
 
sed -e s/\(RXH[^ ]*\), */,%/g' FILE1 | tr '%' '\n' > output

Pattern is like this RXH and the not space zero or more after RXH in the delimit pattern,
, zero or more . inserting a newline , but this code is not giving exprected result

Please let me know what is wrong in this

Thanks
Jaita
# 14  
Old 11-28-2010
Hi

You forgot the leading simple quote ' as well as the \1 (in red below)
Try this :

Code:
sed -e 's/\(RXH[^ ]*\), */\1,%/' FILE1 | tr '%' '\n'


Last edited by ctsgnb; 11-28-2010 at 05:20 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Insert a newline after match in files of specific name under some subdirectories?

Hi I'd like to add the newline: \tuser: nobody", or "<TAB>user: nobody to all files named: docker-compose.ymlin subfolders of pwd with names beginning with 10-20. Within these files, I'd like to find the line (there'll only be one) containing: command: celery workerNOTE: As far as... (2 Replies)
Discussion started by: duncanbetts
2 Replies

2. Shell Programming and Scripting

Regular expression match

echo 20110101 | awk '{ print match($0,/^((17||18||19||20)|)-*(|0|1)-*(|0||3)$/)) I am getting a match for the above, where as it shouldn't, as there is no hyphen in the echoed date. Another question is what is the difference between || and | in the above statement (4 Replies)
Discussion started by: tostay2003
4 Replies

3. Shell Programming and Scripting

Help with awk script (syntax error in regular expression)

I've found this script which seems very promising to solve my issue: To search and replace many different database passwords in many different (.php, .pl, .cgi, etc.) files across my filesystem. The passwords may or may not be contained within quotes, single quotes, etc. #!/bin/bash... (4 Replies)
Discussion started by: spacegoose
4 Replies

4. Shell Programming and Scripting

regular expression exact match

hi everyone suppose we have two scenario echo ABCD | grep \{4\} DATE echo SYSDATE | grep \{4\} SYSDATE i want to match the string of four length only please help (5 Replies)
Discussion started by: aishsimplesweet
5 Replies

5. Shell Programming and Scripting

AWK script issue for the part regular expression

Hi I am having a file as shown below FILE 1 TXDD00, TXDD01, TXDD02, TXDD03, TXDD04, TXDD05, TXDD06, TXDD07, TXDD08, TXDD09, TXDD10, TXDD11, TXDD12, TXDD13, TXDD14, TXDD15, TXDD16, TXDD17, TXDD18, TXDD19, TXDDCLK, TXDJTAGAMPL0, TXDJTAGAMPL1,... (3 Replies)
Discussion started by: jaita
3 Replies

6. Shell Programming and Scripting

regular expression match

I am trying to match a similar line using grep with regular expression the line is /remote/mac/pbbbb/abc/def/hij/hop/include/abc/tif/element/test/testfiles/Office.cpp:57: const OfficeType& getType().get() const; I just need to extract the bold characters using grep with regular expression.... (5 Replies)
Discussion started by: prasbala
5 Replies

7. Shell Programming and Scripting

regular expression to match repeated appearance

Hi all, I am looking for a regex syntax to match repeated appearance. Likes, ']+]+' matches for string '65A SOME MORE AND 78B' Now, this gets messy if I need to extract all such repeated appearance. I don't want to write ] four or five times for matching repeated appearance. Thanks in... (2 Replies)
Discussion started by: guruparan18
2 Replies

8. Shell Programming and Scripting

Regular expression match

Hi all, any idea how to match the following: char*<no or any string or space> buf and char *<no or any string or space> buf i need to capture the buf characters too. currently i need two checks to cover this: #search char* <any string> buf or char *<any string> buf @noarray =... (2 Replies)
Discussion started by: ChaMeN
2 Replies

9. UNIX for Dummies Questions & Answers

Regular Expression - match 'b' that follows 'a' and is at the end of a string

Hi, I'm struggling with a regex that would match a 'b' that follows an 'a' and is at the end of a string of non-white characters. For example: Line 1: aba abab b abb aab bab baa I can find the right strings but I'm lacking knowledge of how to "discard" the bits that precede bs.... (2 Replies)
Discussion started by: machinogodzilla
2 Replies

10. UNIX for Dummies Questions & Answers

Exact match with regular expression

Hi I have a file with data arranged into columns. The first column is the chromosome name. When I use grep to subset only rows with chr1, I get chr1 but also chr10, chr11,.. How do I get only rows with chr1? grep chr1 filein > fileout head fileout chr1 59757841 chr11 108258691 ... (2 Replies)
Discussion started by: jdhahbi
2 Replies
Login or Register to Ask a Question