![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Linux RedHat, Ubuntu, SUSE, Fedora, Debian, Mandriva, Slackware, Gentoo linux, PCLinuxOS. All Linux questions here! |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Pattern Replacement | palash2k | UNIX for Dummies Questions & Answers | 12 | 04-26-2008 09:05 AM |
| AWK pattern matching, first and last | smb_uk | Shell Programming and Scripting | 10 | 12-27-2007 06:03 PM |
| Pattern Matching | op4_u | Shell Programming and Scripting | 10 | 07-17-2006 09:30 PM |
| pattern matching | larryase | UNIX for Dummies Questions & Answers | 3 | 11-22-2004 03:54 PM |
| Pattern Matching | danhodges99 | UNIX for Dummies Questions & Answers | 2 | 02-27-2003 12:03 PM |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
matching pattern and replacement
Hi
I am trying to look for a view name in create view statement and then replace this view name with VW_ in grants line in my ddl file . cat dim_provider.sql | grep -i "create view" | while read f1 f2 f3 f4 f5 f6 f7 f8 f9 do new_vw=` echo "$f3" | cut -d "." -f2 ` sed -e 's/${new_vw}/VW_${new_vw}/g' dim_provider.sql > dim_provider.sql1 done The sql file is #grep -i grant dim_provider.sql GRANT SELECT ON TABLE OPSDM002.PROVIDER_MBR_PRI TO GROUP DSDBDEV ; GRANT SELECT ON TABLE OPSDM002.PROVIDER_MBR_PRI TO GROUP UHCDMTST ; GRANT SELECT ON TABLE OPSDM002.PROVIDER_MBR_PRI TO GROUP CLOSEL01 ; I want the change to be GRANT SELECT ON TABLE OPSDM002.VW_PROVIDER_MBR_PRI TO GROUP DSDBDEV ; GRANT SELECT ON TABLE OPSDM002.VW_PROVIDER_MBR_PRI TO GROUP UHCDMTST ; GRANT SELECT ON TABLE OPSDM002.VW_PROVIDER_MBR_PRI TO GROUP CLOSEL01 ; I don't know what needs to be done now . Thanks |
| Forum Sponsor | ||
|
|
|
#2
|
|||
|
|||
|
Well , I modified it to better one ( I guess ) but I don't get the output file as desired one .
The updated code is cat dim_provider.sql | grep -i "create view" | while read f1 f2 f3 f4 f5 f6 f7 f8 f9 do new_vw=` echo "$f3" | cut -d "." -f2 ` echo "${new_vw}" cat dim_provider.sql | grep -i GRANT | grep -i ${new_vw} | while read f1 f2 f3 f4 f5 f6 f7 f8 f9 do sed -e s/${new_vw}/VW_${new_vw}/g dim_provider.sql > dim_provider.sql1 done done and sh -x of shl is #sh -x add_VW_grants.shl + [[ -n 1 ]] + return + cat dim_provider.sql + grep -i create view + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + + echo OPSDM002.PROVIDER_MBR_PRI + cut -d . -f2 new_vw=PROVIDER_MBR_PRI + echo PROVIDER_MBR_PRI PROVIDER_MBR_PRI + cat dim_provider.sql + grep -i GRANT + grep -i PROVIDER_MBR_PRI + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_MBR_PRI/VW_PROVIDER_MBR_PRI/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_MBR_PRI/VW_PROVIDER_MBR_PRI/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_MBR_PRI/VW_PROVIDER_MBR_PRI/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_MBR_PRI/VW_PROVIDER_MBR_PRI/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + + echo OPSDM002.PROVIDER_REF + cut -d . -f2 new_vw=PROVIDER_REF + echo PROVIDER_REF PROVIDER_REF + cat dim_provider.sql + grep -i GRANT + grep -i PROVIDER_REF + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_REF/VW_PROVIDER_REF/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_REF/VW_PROVIDER_REF/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_REF/VW_PROVIDER_REF/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_REF/VW_PROVIDER_REF/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + + echo OPSDM002.PROVIDER_SRVC + cut -d . -f2 new_vw=PROVIDER_SRVC + echo PROVIDER_SRVC PROVIDER_SRVC + cat dim_provider.sql + grep -i GRANT + grep -i PROVIDER_SRVC + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_SRVC/VW_PROVIDER_SRVC/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_SRVC/VW_PROVIDER_SRVC/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_SRVC/VW_PROVIDER_SRVC/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_SRVC/VW_PROVIDER_SRVC/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 apsp8642:/dba_wk/dual_schema # Any help is appreciated ! |
|
#3
|
||||
|
||||
|
One way,
Code:
awk -F. -v OFS=. '/^[Gg][Rr][Aa][Nn][Tt]/{ $2="VW_"$2; print }' filename
If you need only the lines with upper case GRANT then replace the search pattern with: Code:
awk -F. -v OFS=. '/^GRANT/{ ... }' filename
|
|
#4
|
|||
|
|||
|
Rubin ,
This will not solve what I need. Your code will change all the view names and table names whereever GRANT is there but I need to look for CREATE VIEW names and get the name of view and then change it to VW_ in the grant section . Thanks |
|
#5
|
|||
|
|||
|
Some lines of the file dim_provider.sql and the desired output would be helpful.
Regards |
|
#6
|
|||
|
|||
|
Here is the input file first :
#egrep -i "view|grant " dim_provider.sql CREATE VIEW OPSDM002.PROVIDER_MBR_PRI ( MBR_PRI_PROV_SYS_ID, MBR_PRI_COS_PROV_SPCL_CD, CREATE VIEW OPSDM002.PROVIDER_REF ( REF_PROV_SYS_ID, REF_COS_PROV_SPCL_CD, CREATE VIEW OPSDM002.PROVIDER_SRVC ( SRVC_PROV_SYS_ID, SRVC_COS_PROV_SPCL_CD, GRANT SELECT ON TABLE OPSDM002.PROVIDER_MBR_PRI TO GROUP DSDBDEV ; GRANT SELECT ON TABLE OPSDM002.PROVIDER_MBR_PRI TO GROUP UHCDMTST ; GRANT CONTROL ON TABLE OPSDM002.PROVIDER_REF TO USER SNIETER ; GRANT CONTROL ON TABLE OPSDM002.PROVIDER_REF TO USER LTREXL1 ; GRANT SELECT ON TABLE OPSDM002.PROVIDER_SRVC TO GROUP DSDBDEV ; GRANT SELECT ON TABLE OPSDM002.PROVIDER_SRVC TO GROUP UHCDMTST ; Here is the output file now : #egrep -i "view|grant " dim_provider.sql1 CREATE VIEW OPSDM002.PROVIDER_MBR_PRI ( MBR_PRI_PROV_SYS_ID, MBR_PRI_COS_PROV_SPCL_CD, CREATE VIEW OPSDM002.PROVIDER_REF ( REF_PROV_SYS_ID, REF_COS_PROV_SPCL_CD, CREATE VIEW OPSDM002.VW_PROVIDER_SRVC ( SRVC_PROV_SYS_ID, SRVC_COS_PROV_SPCL_CD, GRANT SELECT ON TABLE OPSDM002.PROVIDER_MBR_PRI TO GROUP DSDBDEV ; GRANT SELECT ON TABLE OPSDM002.PROVIDER_MBR_PRI TO GROUP UHCDMTST ; GRANT CONTROL ON TABLE OPSDM002.PROVIDER_REF TO USER SNIETER ; GRANT CONTROL ON TABLE OPSDM002.PROVIDER_REF TO USER LTREXL1 ; GRANT SELECT ON TABLE OPSDM002.VW_PROVIDER_SRVC TO GROUP DSDBDEV ; GRANT SELECT ON TABLE OPSDM002.VW_PROVIDER_SRVC TO GROUP UHCDMTST ; If you notice , the code made changes to the last name of the view . I don't know how it is working this way . But sh -x show the correct output on screen . Thanks |
|
#7
|
|||
|
|||
|
Sorry I forgot to post sh -x part of the code .
#sh -x add_VW_grants.shl + [[ -n 1 ]] + return + cat dim_provider.sql + grep -i create view + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + + echo OPSDM002.PROVIDER_MBR_PRI + cut -d . -f2 new_vw=PROVIDER_MBR_PRI + echo PROVIDER_MBR_PRI PROVIDER_MBR_PRI + cat dim_provider.sql + grep -i GRANT + grep -i PROVIDER_MBR_PRI + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_MBR_PRI/VW_PROVIDER_MBR_PRI/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_MBR_PRI/VW_PROVIDER_MBR_PRI/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + + echo OPSDM002.PROVIDER_REF + cut -d . -f2 new_vw=PROVIDER_REF + echo PROVIDER_REF PROVIDER_REF + cat dim_provider.sql + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + grep -i GRANT + grep -i PROVIDER_REF + sed -e s/PROVIDER_REF/VW_PROVIDER_REF/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_REF/VW_PROVIDER_REF/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + + echo OPSDM002.PROVIDER_SRVC + cut -d . -f2 new_vw=PROVIDER_SRVC + echo PROVIDER_SRVC PROVIDER_SRVC + cat dim_provider.sql + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + grep -i GRANT + grep -i PROVIDER_SRVC + sed -e s/PROVIDER_SRVC/VW_PROVIDER_SRVC/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + sed -e s/PROVIDER_SRVC/VW_PROVIDER_SRVC/g dim_provider.sql + 1> dim_provider.sql1 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 + read f1 f2 f3 f4 f5 f6 f7 f8 f9 Thanks, |
|||
| Google The UNIX and Linux Forums |
| Tags |
| solaris |
| Thread Tools | |
| Display Modes | |
|
|