how to delete extra character in a line?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting how to delete extra character in a line?
# 1  
Old 11-15-2010
how to delete extra character in a line?

And I want to delete the characters longer than 20 for each line start with #. The other lines should remain the same. I think this can be done by sed. Could anyone help me with this? Thanks!

my input file:
Code:
#ZP_05494889.1_Clostridium_papyrosolvens
-------SMISALDIIDSYIKNKD-INNVLLVSSCMITPCAREDDIVVYPSTADASAAVI
L--QKITEKNRSGVIDSGFYTDCSYNWTIKNPACGFSR--ITDNSVDTRMKMMEWNQFD-

#YP_002507159.1_Clostridium_cellulolyticum_H10
-------SMISALDIIDSYIKNKN-INNVLLVSSCMITPFAREDDIIVYPSTADASAAVV
L--QKIPDSDRSGVIDSGFYTDCSYNWTIKNPACGFSR--ITDNSVDTNMKMMEWNQFD-

expected output file:
Code:
#ZP_05494889.1_Clos
-------SMISALDIIDSYIKNKD-INNVLLVSSCMITPCAREDDIVVYPSTADASAAVI
L--QKITEKNRSGVIDSGFYTDCSYNWTIKNPACGFSR--ITDNSVDTRMKMMEWNQFD-

#YP_002507159.1_Clos
-------SMISALDIIDSYIKNKN-INNVLLVSSCMITPFAREDDIIVYPSTADASAAVV
L--QKIPDSDRSGVIDSGFYTDCSYNWTIKNPACGFSR--ITDNSVDTNMKMMEWNQFD-


Last edited by Scott; 11-15-2010 at 05:10 PM.. Reason: Code tags
# 2  
Old 11-15-2010
Try:
Code:
sed 's/^\(#.\{19\}\).*/\1/' file

# 3  
Old 11-15-2010
Quote:
Originally Posted by Scrutinizer
Try:
Code:
sed 's/^\(#.\{19\}\).*/\1/' file

wow~ that works!
It will be great if you could also explain the code to me, since I'm a beginner in this.

Thanks so much!
# 4  
Old 11-15-2010
If sed finds a # followed by 19 characters ( .\{19\} ) at the start of the line ( ^ ) and then the remaining characters until the end of the line, it replaces all this with the part of the match that lies between \( and \) by using backreference 1 ( \1 ) .

I can imagine this is still a bit cryptic. I hope it is clear enough Smilie
This User Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Count specific character of a file in each line and delete this character in a specific position

I will appreciate if you help me here in this script in Solaris Enviroment. Scenario: i have 2 files : 1) /tmp/TRANSACTIONS_DAILY_20180730.txt: 201807300000000004 201807300000000005 201807300000000006 201807300000000007 201807300000000008 2)... (10 Replies)
Discussion started by: teokon90
10 Replies

2. Shell Programming and Scripting

Sed: delete on each line before a character and after a character

Hi there, A total sed noob here. Is there a way using sed to delete everything before a character AND after another character on each line in a file? The deletion should also delete the indicating characters(here: an opening and a closing parenthesis). The original file would look like... (3 Replies)
Discussion started by: bnbsd
3 Replies

3. Shell Programming and Scripting

Delete line breaks and extra spaces between patterns

Hi, if in between strings "<section" and "</section>" across multiple lines there occurs the string "ole-present", delete all line breaks and replace any tabs or multiple spaces with a single space. Looking for an AWK or SED solution. Thank you. <section ... status = "ole-present" ...... (2 Replies)
Discussion started by: pioavi
2 Replies

4. Shell Programming and Scripting

Delete line based on count of specific character

I'm looking for what I hope might be a one liner along these lines: sed '/a line with more than 3 pipes in it/d' I know how to get the pipe count in a string and store it in a variable, but I'm greedy enough to hope that it's possible via regex in the /.../d context. Am I asking too much? ... (5 Replies)
Discussion started by: tiggyboo
5 Replies

5. Shell Programming and Scripting

delete new line character ( - ) , korn shell

Hi guys , i need help so bad on this issue.. Basically i have to delete the line continuation symbol of first column variable and add the truncated part of that word in next line to first line. here i written sample 3 lines but originally i have bunch of lines in that file. client1_day- ... (3 Replies)
Discussion started by: chrismorgan
3 Replies

6. Shell Programming and Scripting

Sed or Grep to delete line containing patter plus extra line

I'm new to using sed and grep commands, but have found them extremely useful. However I am having a hard time figuring this one out: Delete every line containing the word CEN and the next line as well. ie. test.txt blue 324 CEN green red blue 324 CEN green red blue to produce:... (2 Replies)
Discussion started by: rocketman88
2 Replies

7. UNIX for Dummies Questions & Answers

Delete the line started with nondigit or newline character

i want to delete the line which is not started with numeric in vim. vim temp.txt Volume in drive D is DATA Volume Serial Number is 8C52-2055 Directory of D:\data\notes 02/16/2010 03:09 PM <DIR> . 02/16/2010 03:09 PM <DIR> .. 09/11/1999 03:03 AM ... (5 Replies)
Discussion started by: Manabhanjan
5 Replies

8. Shell Programming and Scripting

script to delete character in a line

Hi, Please help me to edit a file, with the following changes, 1) serach for XYZ , appears at the start of line, delete a character present in specified column number in a line. 2) This needs to be repeated in multiple rows and not the entire file Thanks (1 Reply)
Discussion started by: abc_81
1 Replies

9. UNIX for Dummies Questions & Answers

delete a line based on first character of the line

Hi, I need to delete all lines in a file which starts with "|" character. Can some one assist me? Thanks (2 Replies)
Discussion started by: borncrazy
2 Replies

10. Shell Programming and Scripting

How to delete last character of a line?

Hello, I think I'm close to doing this, but I could be wrong. I have a string I would like to search for and delete the last character of the that line. This is what I have... sed 's/POHEAD\(.\)$//g' tempd > tempe The above works if I search for P, but that won't work. I need to search... (2 Replies)
Discussion started by: ctcuser
2 Replies
Login or Register to Ask a Question