Remove certain section from the line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Remove certain section from the line
# 1  
Old 08-17-2009
Remove certain section from the line

A typical line looks like this...

Code:
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=129  COMMENT='Compiled E-Mails';

I want to remove DEFAULT CHARSET= and COLLATE= after resetting AUTO_INCREMENT=0
I do not want to change the engine and comment.
# 2  
Old 08-17-2009
Assuming you want it to cope with the order of params changing:
Code:
sed 's/DEFAULT CHARSET=[^ ]* //;s/COLLATE=[^ ]* //;s/AUTO_INCREMENT=[^ ]* /AUTO_INCREMENT=0/'

# 3  
Old 08-17-2009
Thanks. But it it does not work when the line does not has the auto_increment clause. In the example, the third line is wrong. There should have been no "Default charset".

Code:
>> cat test.txt
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=482 COLLATE=utf8 COMMENT="testing deletion using sed";
) ENGINE=InnoDB AUTO_INCREMENT=482 DEFAULT CHARSET=utf8 COLLATE=utf8 COMMENT="testing deletion using sed";
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

>> sed 's/DEFAULT CHARSET=[^ ]* //;s/COLLATE=[^ ]* //;s/AUTO_INCREMENT=[^ ]* /AUTO_INCREMENT=0 /' test.txt
) ENGINE=InnoDB AUTO_INCREMENT=0 COMMENT="testing deletion using sed";
) ENGINE=InnoDB AUTO_INCREMENT=0 COMMENT="testing deletion using sed";
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

# 4  
Old 08-17-2009
try this:

Code:
$more file10
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=482 COLLATE=utf8 COMMENT="testing deletion using sed";
) ENGINE=InnoDB AUTO_INCREMENT=482 DEFAULT CHARSET=utf8 COLLATE=utf8 COMMENT="testing deletion using sed";
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


awk '
{
    for (word=1;word <NF; word++)
    {
        if  (index($word,"DEFAULT") || index($word, "CHARSET=") || index($word, "COLLATE="))
            $word=""
        else
        if  (index($word, "AUTO_INCREMENT="))
            $word="AUTO_INCREMENT=0"
    }
    print $0 

}
' file10

Result:
) ENGINE=InnoDB   AUTO_INCREMENT=0  COMMENT="testing deletion using sed";
) ENGINE=InnoDB AUTO_INCREMENT=0    COMMENT="testing deletion using sed";
) ENGINE=MyISAM  CHARSET=latin1;

# 5  
Old 08-19-2009
Thanks chipcmc.
But as shown in your own example, the CHARSET=latin1; is still there on line 3. The lines 1 and 2 are OK.
# 6  
Old 08-19-2009
Quote:
Originally Posted by shantanuo
Thanks chipcmc.
But as shown in your own example, the CHARSET=latin1; is still there on line 3. The lines 1 and 2 are OK.
Yes is true, the problem is the bucle for xD the condition is <NF Smilie...change for <=NF and everything is OK ..
# 7  
Old 08-19-2009
I see the issue, I'd not thought about the end of line character:
Code:
sed 's/DEFAULT CHARSET=[^ \;]*//;s/COLLATE=[^ \;]*//;s/AUTO_INCREMENT=[^ \;]*/AUTO_INCREMENT=0 /'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to change file section into each line?

Hi Gurus, I have below file which has different sections, need to move the sections to beginning of the each record. original file aaa bbb ccc ddd eee fff output file. aaa bbb ccc ddd eee fff (6 Replies)
Discussion started by: green_k
6 Replies

2. Shell Programming and Scripting

Grep or print each section of a file on one line with a separator

I can obtain information from itdt inventory command however it display as below, I'd like to print each entity on one line but seperated by : the file is something like and each section ends with Volume Tag Drive Address 256 Drive State ................... Normal ASC/ASCQ... (3 Replies)
Discussion started by: gefa
3 Replies

3. Shell Programming and Scripting

Print the first n line in each section

Hi, i have a file like this: ... 11111111 22222222 33333333 # 4444444 5555555 6666666 7777777 # ... i want just print the 2 first line between each section (each section is separated with "#"). so desired output would be like this: ... 11111111 22222222 (3 Replies)
Discussion started by: saeed.soltani
3 Replies

4. Shell Programming and Scripting

Prepend first line of section to each line until the next section header

I have searched in a variety of ways in a variety of places but have come up empty. I would like to prepend a portion of a section header to each following line until the next section header. I have been using sed for most things up until now but I'd go for a solution in just about anything--... (7 Replies)
Discussion started by: pagrus
7 Replies

5. Shell Programming and Scripting

remove <br> not in section

I need to remove the <BR> from all sections of a page, except what is between a section of text: #!/bin/sh sed ' /Testing Considerations/,/<B>PT# - Description:/ ! { s/<BR>// } ' But this isn't working. I'm not using the ! operator correctly, can someone... (2 Replies)
Discussion started by: dba_frog
2 Replies

6. Shell Programming and Scripting

Extract section of file based on word in section

I have a list of Servers in no particular order as follows: virtualMachines="IIBSBS IIBVICDMS01 IIBVICMA01"And I am generating some output from a pre-existing script that gives me the following (this is a sample output selection). 9/17/2010 8:00:05 PM: Normal backup using VDRBACKUPS... (2 Replies)
Discussion started by: jelloir
2 Replies

7. Shell Programming and Scripting

Search and Remove No data Section

Hello, I have written a script that removes duplicates within a file and places them in another report. File: ABC1 012345 header ABC2 7890-000 ABC3 012345 Content Header ABC5 593.0000 587.4800 ABC5 593.5000 587.6580 ABC5 593.5000 587.6580 ABC1 67890 header ABC2 1234-0001 ABC3... (2 Replies)
Discussion started by: petersf
2 Replies

8. Shell Programming and Scripting

Duplicate Line Report per Section

I've been working on a script (/bin/sh) in which I have requested and received help here (in which I am very grateful for!). The client has modified their requirements (a tad), so without messing up the script to much, I come once again for assistance. Here are the file.dat contents: ABC1... (4 Replies)
Discussion started by: petersf
4 Replies

9. Shell Programming and Scripting

how to retreive certain section of the line

Hi I am using "grep" command to get certain pattern out of the file: PNUM=34 $ grep -w "#${PNUM}" myfile #34 * 2297 * 410 * 964 * * 4352 $ Is there a way to retrieve the section of the above output without #34 so the output would look like this:... (3 Replies)
Discussion started by: aoussenko
3 Replies

10. UNIX for Dummies Questions & Answers

help find a section line of a file

hi, I have a 20 line file. I need a command which will brinf back a specific line based upon the line number I enter. e.g. the file looks like this and is called file1 jim is a man john is a woman james is a man wendy is a woman lesley is a woman i want a command that will... (4 Replies)
Discussion started by: sureshy
4 Replies
Login or Register to Ask a Question