Visit Our UNIX and Linux User Community


How to remove a char before a pattern?


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users How to remove a char before a pattern?
# 1  
Old 02-20-2017
How to remove a char before a pattern?

Hi I have a file where i want to remove a char before a specific pattern.
exp:
Code:
CREATE TABLE
 (
 A,
 B,
 C,      ----comma needs to be removed
 )AS SELECT
 A,
 B,
 C,      ----comma needs to be removed
 FROM  TABLE.

So i want to delete the comma(,) after the C both ways.Pattern can be look for ")AS SELECT" and "FROM" .So before this pattern i want to delete a single char which is comma.
my output should:

Code:
CREATE TABLE
 (
 A,
 B,
 C      -----removed comma
 )AS SELECT
 A,
 B,
 C      -----removed comma
 FROM  TABLE.


Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 02-20-2017 at 02:48 PM.. Reason: Added/Changed CODE tags.
# 2  
Old 02-20-2017
Hello raju2016,

Kindly use code tags for commands/codes/Input_file as per forum rules. Could you please try following and let us know if this helps.
Code:
awk '{sub(/^C,/,"C");print}'   Input_file

Thanks,
R. Singh

Last edited by RavinderSingh13; 02-20-2017 at 02:07 PM..
# 3  
Old 02-20-2017
Hi Ravinder,

The column "C" is not always constant.So thats why i said based on the pattern before the one character which is comma(,) need to be removed.MAy be sometime more columns come..
# 4  
Old 02-20-2017
Hello raju2016,

Could you please post sample Input_file(with more clear samples please) and expected output as it is not clear.

Thanks,
R. Singh
# 5  
Old 02-20-2017
Input:
Code:
/*in below example comma needs to remove after C*/
CREATE TABLE
(
A,
B,
C,    ----comma needs to be removed
)AS SELECT
A,
B,
C,     ----comma needs to be removed
FROM TABLE

/*in below example comma needs to remove after D*/
CREATE TABLE
(
A,
B,
C,
D,     ----comma needs to be removed
)AS SELECT
A,
B,
C,    
D,      ----comma needs to be removed
FROM TABLE.


Expected O/P
Code:
/*comma removed from C in both place*/
CREATE TABLE
(
A,
B,
C          -----comma removed
)AS SELECT
A,
B,
C             -----comma removed
FROM TABLE;
/*comma replaced from D */
CREATE TABLE
(
A,
B,
C,
D        ----comma  removed
)AS SELECT
A,
B,
C,    
D        ----comma  removed
FROM TABLE3.

you can use pattern because the pattern is constant...like "FROM" and ")AS SELECT". Need to remove the comma before these two patterns.


Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 02-20-2017 at 02:53 PM.. Reason: Added CODE tags.
# 6  
Old 02-20-2017
Hello raju2016,

Could you please try following and let us know if this helps you.
Code:
awk '/AS SELECT/ || /FROM TABLE/{sub(/,$/,"",VAL);print VAL;VAL=$0;next} VAL{print VAL} {;VAL=$0} END{print VAL}'  Input_file

Output will be as follows.
Code:
CREATE TABLE
(
A,
B,
C
)AS SELECT
A,
B,
C
FROM TABLE
CREATE TABLE
(
A,
B,
C,
D
)AS SELECT
A,
B,
C,
D
FROM TABLE.

Thanks,
R. Singh
# 7  
Old 02-20-2017
Hello raju2016,

You could thank a person by hitting THANKS button, also please use code tags for sample Input_file. Could you please try following once.
Code:
awk '/^)$/{sub(/,$/,"",VAL);print VAL;VAL=$0;next} VAL{print VAL} {;VAL=$0} END{print VAL}'   Input_file

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #10
Difficulty: Easy
Charles Babbage was a British mathematician and inventor, known as the 'Father of the Computer'. He designed a mechanical computer called the Analytical Engine which was an early forerunner of the modern computer.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Remove char if not a number

I need to write a BASH script that takes a 2 character string and removes the second character if it is not a digit e.g. If the string is numberical value >9 e.g. string1 = '34' then leave string1 = '34'. However if the string is <10 e.g. string1 = '3X' then remove the second char (which... (7 Replies)
Discussion started by: millsy5
7 Replies

2. UNIX for Dummies Questions & Answers

Remove newline char from variable

I have a file ABC.DAT with 2 columns avaialble Data format : XYZ!$#$!120 XXZ!$#$!1000 YYZ!$#$!104 While running the following code : FILE_COUNTER=1; RECORD_CN_FILE_COUNT=$((`wc -l ABC.DAT| cut -f1 -d' '`)); while do FILE_NAME=`cat ABC.DAT.DAT| head -$FILE_COUNTER |tail -1 | awk -F... (1 Reply)
Discussion started by: Nikhil Gautam
1 Replies

3. Shell Programming and Scripting

To get char between pattern

hi, this my text ...................... Read 21 physical / 21 logical HMMs Read lattice with 16 nodes / 36 arcs Created network with 53 nodes / 73 links File: speech.mfc !sil two eight six nine six eight !sil == -68.5133 (Act=50.4)...................... i need to extract output text... (4 Replies)
Discussion started by: sreejithalokkan
4 Replies

4. Shell Programming and Scripting

How to remove the # char form a line?

Hi, my file has below details and I want remove the # char from only specific line. #TEST:00:START #TEST1:01:INPROCESS #TEST2:02:ABOUTTO #TEST3:03:COMP i.e if want remove the # from 2nd line then file to be updated as #TEST:00:START TEST1:01:INPROCESS #TEST2:02:ABOUTTO... (6 Replies)
Discussion started by: sandyrajh
6 Replies

5. Red Hat

How to remove a special char using sed

consider this is my sample file format. in this i want to remove ^@ with space . please help me in this problm 7305,1310184890,0,0,12,201370,FCASTBHBR0 ,XX ,2,1,2,0,^@,1,1,0,3,1303862400,0,1577923199,1,10,FCASTOR SEED EX-BHABHAR ... (2 Replies)
Discussion started by: ponmuthu-lnx
2 Replies

6. UNIX Desktop Questions & Answers

Help me to remove junk char

I wanted to remove junk char in my csv. :mad: Input file format: "17","9986782190","0","D","2" "17","9900918331","0","D","2" "13","9986782194","0","A","2" Output file format 9986782190 9900918331 9986782194 And one more thing all the time "13"," this will be different Ex: . (2 Replies)
Discussion started by: Siddartha
2 Replies

7. Shell Programming and Scripting

Remove char after Colon

Hi guys, This is my input 2735:<7001> 34 789 701 2 2774:<7001> 34 789 701 2 How to delete characters after colon : Including colon : too ? My output should... (3 Replies)
Discussion started by: gowrishankar05
3 Replies

8. Shell Programming and Scripting

can I remove the first char using AWK?

Hi everyone, suppose that I have the following line: #test your knowledge can I use AWK to print the word "test" only? without the #? what should I change to this: awk '{print $1}' thanks in advance guys (2 Replies)
Discussion started by: Abdulelah
2 Replies

9. Shell Programming and Scripting

Help needed to remove a char from a specified sub-string

Hi! I'm having trouble usind sed to remove the char ' from within a database's varchar register's sql. For example, on the following sql: INSERT INTO patrimonio_municipal.patrimonio_municipal_airc_tmp Values('|Estação Elevatória|',|16723|,'|Grandes Reparações|', '|2010-03-26... (3 Replies)
Discussion started by: cremat0rio
3 Replies

10. Shell Programming and Scripting

How to remove new line char from a string

Hi Can anyone tell me how can i remove new line character from a string. My requirement is to read a line from a file and store it to a string. read line string1=$line read line string2=$line echo $string1$string2 The result i am getting in different line. i want the output in the same... (1 Reply)
Discussion started by: sreedivia
1 Replies

Featured Tech Videos