2013年9月6日星期五

The awk gsub replacement

Text reads my-friends:
Hans Jurgen School
Unter den Linden 78
D-10117 Berlin
Germany

# SORTKEY: Jones, Adrian
Adrian Jones
371 Montgomery Park Road
Henley-on-Thames RG9 4AJ
UK

# SORTKEY: Brown, Kim
Kim Brown
1841 S Main Street
Westchester, NY 10502
USA
executed twice now replaced with awk
cat my-friends |
awk-v RS = "" '{gsub ("\ n", "^ Z"); print}' |
awk-v ORS = "\ n \ n" '{gsub ("^ Z", "\ n" ;); print} '
output:
# SORTKEY: School, Hans Jurgen ^ ZHans Jurgen School ^ ZUnter den Linden 78 ^ ZD-10117 Berlin ^ ZGermany

# SORTKEY: Jones, Adrian ^ ZAdrian Jones ^ Z371 Montgomery Park Road ^ ZHenley-on-Thames RG9 4AJ ^ ZUK

# SORTKEY: Brown, Kim ^ ZKim Brown ^ Z1841 S Main Street ^ ZWestchester, NY 10502 ^ ZUSA ^ Z
Why not be replaced ah ? ? ? ? ? ?
operating platforms : Linux version 2.6.18-164.el5 (mockbuild@x86-002.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) # 1 SMP Tue Aug 18 15:51:54 EDT 2009
------ Solution --------- -----------------------------------
cat my-friends |awk -v RS="" '{gsub("\n","^Z");print}' |awk -v ORS="\n\n" '{gsub("\\^Z","\n");print}'


I think it needs to be escaped
------ Solution - -------------------------------------------
awk -v RS="" 'gsub("\n","^Z")' my-friends | awk -v ORS="\n\n" 'gsub("\\^Z"," ")'
< br> ------ For reference only ---------------------------------------
Well , try the next , lisa5001 said is right, thanks

没有评论:

发表评论