Sponsored Content
Full Discussion: Regexp and sed problem
Top Forums Shell Programming and Scripting Regexp and sed problem Post 302354613 by sol_nov on Friday 18th of September 2009 09:03:32 PM
Old 09-18-2009
Bug Regexp and sed problem

Basically it should identify what ever is in between /*< >*/ (tags) and replace dbname ending with (.) with the words in between the tags

i.e.

Code:
    DELETE FROM /*<workDB>*/epd_test./*<multi>*//*<version>*/epd_tbl1 ALL; into 
    
    
   DELETE FROM /*<workDB>*/${workDB}./*<multi>*//*<version>*/${multi}${version}_epd_tbl1 ALL;

one more example

Code:
       DELETE FROM /*<abcDB>*/epd_test./*<multi>*//*<version>*/epd_tbl1 ALL; into 
       
       
   DELETE FROM /*<abcDB>*/${abcDB}./*<multi>*//*<version>*/${multi}${version}_epd_tbl1 ALL;

what I was thinking was to remember /*< as pattern 1 i.e \(\/\*<\) and workDB as one more pattern >*/ as one more pattern and identify until the
period and replace as above? Is this doable

and similarly for dates it replace with in the single quotes with out using from_dt










sample.sql contains:
Code:
 
DELETE FROM /*<workDB>*/epd_test./*<multi>*//*<version>*/epd_tbl1 ALL;

 
INSERT INTO /*<workDB>*/epd_test./*<multi>*//*<version>*/epd_tbl1
SELECT
  *
FROM
  /*<finDB>*/epd_fin.pr_tbl
WHERE
      (   epd_dt >= cast(/*<from_date>*/'2007-01-01' as date)
      AND epd_dt < cast(/*<to_date>*/'2009-09-14' as date)
      )
  OR  (   epd_cre_dt >= cast(/*<from_date>*/'2007-01-01' as date)
      AND epd_cre_dt < cast(/*<to_date>*/'2009-09-14' as date)
      )
      
    ;

output should be:

Code:
 
DELETE FROM /*<workDB>*/${workDB}./*<multi>*//*<version>*/${multi}${version}_epd_tbl1 ALL;

INSERT INTO /*<workDB>*/${workDB}./*<multi>*//*<version>*/${multi}${version}_epd_tbl1
SELECT
  *
FROM
  /*<finDB>*/${finDB}.pr_tbl
WHERE
      (   epd_dt >= cast(/*<from_dt>*/'${from_dt}' as date)
      AND epd_dt < cast(/*<to_dt>*/'${to_dt}' as date)
      )
  OR  (   epd_cre_dt >= cast(/*<from_dt>*/'${from_dt}' as date)
      AND epd_cre_dt < cast(/*<to_dt>*/'${to_dt}' as date)
      )
      
    ;


Thanks in advance
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

GnuWin32 sed 4.1.4 regexp matching

I am using GnuWin32 sed and am having trouble with the regexp - i.e., they don't behave the same way as in UNIX (POSIX and and all that). I have a stream of data, e.g.: 11111'222?'22'33?'333'44444'55555' I want to insert a \n after those apostrophes that are *not* preceded by a ?. ... (2 Replies)
Discussion started by: Simerian
2 Replies

2. Shell Programming and Scripting

regexp with sed again!!!

please help: I want to add 1 space between string and numbers: input file: abcd12345 output file: abcd 1234 The following sed command does not work: sed 's/\(+\)\(+\)/\1 \2/' file Any ideas, please Andy (2 Replies)
Discussion started by: andy2000
2 Replies

3. Shell Programming and Scripting

Help regarding behavior sed regexp query

Hi all, I have one question regarding sed regexp (or any regexp in general), I have some path like this C:/Abc/def/ghi/jkl in a file file1 Now if i use following code cat file1 | sed 's#\(.*\)/.*#\1#' Now it give me following output C:/Abc/def/ghi, which is fine But i just... (2 Replies)
Discussion started by: sarbjit
2 Replies

4. Shell Programming and Scripting

sed regexp

Hi, I am not that good with reg exp and sed. But I was just looking at something the other day and came across a situation. When I ran the below command: echo "123 word" | sed 's/*/(&)/' the op was: (123) word But when I ran: echo "123 word" | sed 's/*/(&)/g' the o/p was: (123)... (4 Replies)
Discussion started by: King Nothing
4 Replies

5. UNIX for Dummies Questions & Answers

sed before and after regexp

Dear all i have the code which print 1 line of context before and after regexp, with line number sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h the code work well but any one can tell me what each letter mean {=;x;1!p;g;$!N;p;D;} also how i can print 2 line before and onle line after ... (2 Replies)
Discussion started by: soly
2 Replies

6. Shell Programming and Scripting

Help with Regexp replace in vim/sed

Hi! I have a file with multiple lines following this format: <a href="xxx.aaa_bbb_ccc.yyy">xxx.aaa_bbb_ccc.yyy</a> The goal is to replace the title (not modifying the href) so the new lines looks like this: <a href="xxx.aaa_bbb_ccc.yyy">Aaa bbb ccc</a> The number of underscores in the... (2 Replies)
Discussion started by: ericjohansson
2 Replies

7. Shell Programming and Scripting

sed with multiple regexp

Dealing with Linux servers script would be in korn or bash shell syntax file is /etc/fstab I want to insert something if regex is matched to all matched lines in the /etc/fstab file and print out entire /etc/fstab file with the changes example 58.228.111.111:/my/file/system... (5 Replies)
Discussion started by: snoman1
5 Replies

8. Shell Programming and Scripting

Need help with sed and regexp

Hi everyone, I would really appreciate any help I could get on the following topic. I am not very familiar with reg expressions nor with sed, I just know the basic uses. What I am trying to do is the following: I have a huge text file where I would like to replace all occurnces of a certain... (13 Replies)
Discussion started by: Boxtuna
13 Replies

9. Shell Programming and Scripting

sed regexp teaser

G'day, Here's a teaser for a sed guru, which I surely am not one, as even my basic sed skills are rusted from years of not practising ... lol Ok ... we have a string of digits such as: 632413741610252847552619172459483022433027602515212950543016701812771409213148672112 we want it split... (9 Replies)
Discussion started by: naderra
9 Replies

10. UNIX for Beginners Questions & Answers

sed with regexp in Linux

OFF 00280456 - 2014|1|2020_STATUS|GROUP_NAME|SUBGROUP_NAME|CLASS_NAME|GROUP_ID|SUBGROUP_ID I have above header in file. I need to replace 2020_STATUS with STATUS. 2020_STATUS is not always same but the column name will have STATUS all of the time. For instance column name might be 2019_STATUS... (1 Reply)
Discussion started by: jmadhams
1 Replies
CREATE 
CAST(7) SQL Commands CREATE CAST(7) NAME
CREATE CAST - define a user-defined cast SYNOPSIS
CREATE CAST (sourcetype AS targettype) WITH FUNCTION funcname (argtype) [ AS ASSIGNMENT | AS IMPLICIT ] CREATE CAST (sourcetype AS targettype) WITHOUT FUNCTION [ AS ASSIGNMENT | AS IMPLICIT ] DESCRIPTION
CREATE CAST defines a new cast. A cast specifies how to perform a conversion between two data types. For example, SELECT CAST(42 AS text); converts the integer constant 42 to type text by invoking a previously specified function, in this case text(int4). (If no suitable cast has been defined, the conversion fails.) Two types may be binary compatible, which means that they can be converted into one another ``for free'' without invoking any function. This requires that corresponding values use the same internal representation. For instance, the types text and varchar are binary compati- ble. By default, a cast can be invoked only by an explicit cast request, that is an explicit CAST(x AS typename), x::typename, or typename(x) construct. If the cast is marked AS ASSIGNMENT then it can be invoked implicitly when assigning to a column of the target data type. For example, supposing that foo.f1 is a column of type text, then INSERT INTO foo(f1) VALUES(42); will be allowed if the cast from type integer to type text is marked AS ASSIGNMENT, otherwise not. (We generally use the term assignment cast to describe this kind of cast.) If the cast is marked AS IMPLICIT then it can be invoked implicitly in any context, whether assignment or internally in an expression. For example, since || takes text arguments, SELECT 'The time is ' || now(); will be allowed only if the cast from type timestamp to text is marked AS IMPLICIT. Otherwise it will be necessary to write the cast explicitly, for example SELECT 'The time is ' || CAST(now() AS text); (We generally use the term implicit cast to describe this kind of cast.) It is wise to be conservative about marking casts as implicit. An overabundance of implicit casting paths can cause PostgreSQL to choose surprising interpretations of commands, or to be unable to resolve commands at all because there are multiple possible interpretations. A good rule of thumb is to make a cast implicitly invokable only for information-preserving transformations between types in the same general type category. For example, the cast from int2 to int4 can reasonably be implicit, but the cast from float8 to int4 should probably be assignment-only. Cross-type-category casts, such as text to int4, are best made explicit-only. To be able to create a cast, you must own the source or the target data type. To create a binary-compatible cast, you must be superuser (this restriction is made because an erroneous binary-compatible cast conversion can easily crash the server). "PARAMETERS" sourcetype The name of the source data type of the cast. targettype The name of the target data type of the cast. funcname(argtype) The function used to perform the cast. The function name may be schema-qualified. If it is not, the function will be looked up in the path. The argument type must be identical to the source type, the result data type must match the target type of the cast. Cast functions must be marked immutable or stable. WITHOUT FUNCTION Indicates that the source type and the target type are binary compatible, so no function is required to perform the cast. AS ASSIGNMENT Indicates that the cast may be invoked implicitly in assignment contexts. AS IMPLICIT Indicates that the cast may be invoked implicitly in any context. NOTES
Use DROP CAST to remove user-defined casts. Remember that if you want to be able to convert types both ways you need to declare casts both ways explicitly. Prior to PostgreSQL 7.3, every function that had the same name as a data type, returned that data type, and took one argument of a differ- ent type was automatically a cast function. This convention has been abandoned in face of the introduction of schemas and to be able to represent binary compatible casts in the catalogs. (The built-in cast functions still follow this naming scheme, but they have to be shown as casts in pg_cast now.) EXAMPLES
To create a cast from type text to type int4 using the function int4(text): CREATE CAST (text AS int4) WITH FUNCTION int4(text); (This cast is already predefined in the system.) COMPATIBILITY
The CREATE CAST command conforms to SQL99, except that SQL99 does not make provisions for binary compatible types. AS IMPLICIT is a Post- greSQL extension, too. SEE ALSO
CREATE FUNCTION [create_function(7)], CREATE TYPE [create_type(7)], DROP CAST [drop_cast(7)], PostgreSQL Programmer's Guide SQL - Language Statements 2002-11-22 CREATE CAST(7)
All times are GMT -4. The time now is 11:57 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy