Operating System - HP-UX
1836688 Members
2418 Online
110108 Solutions
New Discussion

Re: replacing text - perl, awk....

 
SOLVED
Go to solution
hpuxsa
Frequent Advisor

replacing text - perl, awk....

Hi,
I have many entries like below in a file
/disk1/oracle/HP/hp01.dbf
to
/disk1/oracle/HP/hp01.dbf

/disk2/oracle/HP/hp02.dbf
to
/disk2/oracle/HP/hp02.dbf

I would like to change them as follows

/disk1/oracle/HP/hp01.dbf
to
/disk1_dev/oracle_dev/hp01.dbf

/disk2/oracle/HP/hp02.dbf
to
/disk2_dev/oracle_dev/HP/hp02.dbf

Regards,
Steven
6 REPLIES 6
Francisco J. Soler
Honored Contributor
Solution

Re: replacing text - perl, awk....

Hi Steven,

my solution,

Create a script in awk like this:

----- s.awk -------------------
BEGIN {
flag_to=0
FS="/"
OFS="/"
}

/to/ { flag_to=1 }
/disk1/ { if (flag_to==1) $2="disk1_dev" ; flag_to=0}
/disk2/ { if (flag_to==1) $2="disk1_dev" ; flag_to=0}
{ print }
--------------------------------

Then run it:

awk -f s.awk filein > fileout

Hope this helps.

Frank.

Linux?. Yes, of course.
H.Merijn Brand (procura
Honored Contributor

Re: replacing text - perl, awk....

# perl -pi -e's{\b(disk\d|oracle)/}{$1_dev/};s{/HP/}{/}' your_file

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
Thierry Poels_1
Honored Contributor

Re: replacing text - perl, awk....

hi,

these are the datafiles of an Oracle DB. You probably got this list with an SQL statement. How about modifying this SQL statement and "replacing" the second part.

regards,
Thierry.
All unix flavours are exactly the same . . . . . . . . . . for end users anyway.
Francisco J. Soler
Honored Contributor

Re: replacing text - perl, awk....

Hi Steven,

I have made a mistake, i think you already have seen it.

The statement with /disk2/ is not:
/disk2/ { if (flag_to==1) $2="disk1_dev" ; flag_to=0}

must be:
/disk2/ { if (flag_to==1) $2="disk2_dev" ; flag_to=0}

Frank
Linux?. Yes, of course.
Hein van den Heuvel
Honored Contributor

Re: replacing text - perl, awk....


So do you want that HP always gone, or just sometimes. If always:

$ perl -pe 's;/oracle/HP;_dev/oracle_dev;' old > new


Hein.

Abdul Rahiman
Esteemed Contributor

Re: replacing text - perl, awk....

IF HP always exist,
sed "s/\/oracle\//\_dev\/oracle_dev\//g" file.txt

regds,
Abdul.
No unix, no fun