AWK for multiple line records RS="^" FS="#"


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting AWK for multiple line records RS="^" FS="#"
# 1  
Old 02-28-2012
AWK for multiple line records RS="^" FS="#"

I have to pull multiple line records with ^ as the record separator(RS)... # should be my field separator (FS)...

Sample record is:
Code:
^-60#ORA-00060: deadlock detected while waiting for resource
ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated#PROC:AVAILABLE_FOR_GETNXTTIC#02/27/2012 03:43:45#^

When I print $0, I get the full record properly:
Code:
ads00539:/export/home/vid>cat 123456
^-60#ORA-00060: deadlock detected while waiting for resource
ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated#PROC:AVAILABLE_FOR_GETNXTTIC#02/27/2012 03:43:45#^
 
ads00539:/export/home/vid>awk 'BEGIN {RS="^"; FS="#";} { print $0}' 123456
-60#ORA-00060: deadlock detected while waiting for resource
ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated#PROC:AVAILABLE_FOR_GETNXTTIC#02/27/2012 03:43:45#

if I set that # to be the FS, my $2 should be
ORA-00060: deadlock detected while waiting for resource
ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated

but it pulls only the first line part as $2... and the second line part, it takes as $3
Code:
ads00539:/export/home/vid>awk 'BEGIN {RS="^"; FS="#";} { print $1}' 123456
-60
 
ads00539:/export/home/vid>awk 'BEGIN {RS="^"; FS="#";} { print $2}' 123456
ORA-00060: deadlock detected while waiting for resource
 
ads00539:/export/home/vid>awk 'BEGIN {RS="^"; FS="#";} { print $3}' 123456
ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated
 
ads00539:/export/home/vid>awk 'BEGIN {RS="^"; FS="#";} { print $4}' 123456
PROC:AVAILABLE_FOR_GETNXTTIC

If you see above, $1 and $2 are seperated by #... and so is $3 and $4... but $2 and $3 are seperated by new line character (\n)

which means, it is treating # as a FS and also \n...
Can you please let me know, how can I make it to have only # to be the FS and not \n???

Thanks,
Vidhyaprakash
# 2  
Old 02-28-2012
Hi Vidhyaprakash,

I only can say that it works as expected in my system:
Code:
$ awk --version | head -1                                                                                                                                                                                                                    
GNU Awk 4.0.0                                                                                                                                                                                                                                
$ cat 123456                                                                                                                                                                                                                                 
^-60#ORA-00060: deadlock detected while waiting for resource                                                                                                                                                                                 
ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated#PROC:AVAILABLE_FOR_GETNXTTIC#02/27/2012 03:43:45#^                                                                                                                                  
$ awk 'BEGIN {RS="^"; FS="#";} { print $2}' 123456
                                                                                                                                                                                                                                             
ORA-00060: deadlock detected while waiting for resource                                                                                                                                                                                      
ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated                                                                                                                                                                                     

$ awk -c 'BEGIN {RS="^"; FS="#";} { print $2}' 123456

ORA-00060: deadlock detected while waiting for resource
ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated

Regards,
Birei
This User Gave Thanks to birei For This Post:
# 3  
Old 02-28-2012
may be the reason is i have the older version of awk???
# 4  
Old 02-28-2012
Maybe an older version of awk takes RS as a regular expression and matches it with the beginning of each line.

How about trying to substitute ^ with other strange char in your input file and in your RS variable and run your script again? Only for testing.

Regards,
Birei
This User Gave Thanks to birei For This Post:
# 5  
Old 02-28-2012
Or
Code:
RS="[^]"

This User Gave Thanks to Corona688 For This Post:
# 6  
Old 02-28-2012
Quote:
Originally Posted by Corona688
Or
Code:
RS="[^]"

That assignment gives error, because it understands ^] as "except ]". It could be RS="[\\^]"
Code:
$ LANG=en awk 'BEGIN {RS="[^]"; FS="#";} { print $2}' 123456
awk: cmd. line:1: fatal: Unmatched [ or [^: /[^]/
$ LANG=en awk 'BEGIN {RS="[\^]"; FS="#";} { print $2}' 123456
awk: cmd. line:1: warning: escape sequence `\^' treated as plain `^'
awk: cmd. line:1: fatal: Unmatched [ or [^: /[^]/
$ LANG=en awk 'BEGIN {RS="[\\^]"; FS="#";} { print $2}' 123456

ORA-00060: deadlock detected while waiting for resource
ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated

Regards,
Birei
This User Gave Thanks to birei For This Post:
# 7  
Old 02-28-2012
I tried:
Code:
awk '{print $2}' FS=# RS=^ infile

and it worked on various awks.
What awk are you using?. Are you on Solaris? => use /usr/xpg4/bin/awk instead
This User Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Beginners Questions & Answers

Extract delta records using with "comm" and "sort" commands combination

Hi All, I have 2 pipe delimited files viz., file_old and file_new. I'm trying to compare these 2 files, and extract all the different rows between them into a new_file. comm -3 < sort file_old < sort file_new > new_file I am getting the below error: -ksh: sort: cannot open But if I do... (7 Replies)
Discussion started by: njny
7 Replies

4. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

5. Shell Programming and Scripting

Find lines with "A" then change "E" to "X" same line

I have a bunch of random character lines like ABCEDFG. I want to find all lines with "A" and then change any "E" to "X" in the same line. ALL lines with "A" will have an "X" somewhere in it. I have tried sed awk and vi editor. I get close, not quite there. I know someone has already solved this... (10 Replies)
Discussion started by: nightwatchrenba
10 Replies

6. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

7. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question