Delete 79th character if it is '_'


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Delete 79th character if it is '_'
# 1  
Old 02-19-2013
Delete 79th character if it is '_'

I have some data that must have been two lines at some point. If the string in one cell is longer than 78 characters, the 79th character is a blank space. This was probably a return that was converted to a space somewhere along the line. This data is processed by some code that replaces blank spaces with underscrore. The result is an underscore at the 79th position that does not belong there.

For example:
N-{[3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]amino}(2-hydroxyphenyl)carboxam_ide

These files have tens of thousands to hunderds of thousands of rows, so this definately calls for a script. Is there a way I can check the 79th character of each string and if it is _, delete it? I can copy the column to a file if that would be easier, otherwise I will have to tell the script which column to process.

Here is a short sample of one of the columns that I need to process:
Code:
IUPACNAME
2-(2-cyclopropyl-2-oxoethylthio)-4,6-dimethylpyridine-3-carbonitrile
N-{[3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]amino}(2-hydroxyphenyl)carboxam_ide
butyl[(5-chloro-1-phenylpyrazol-4-yl)sulfonyl]amine
(1S,8R,9R)-10,14-dioxa-2,3,5,7-tetraazatetracyclo[6.4.1.1<9,12>.0<2,6>
(8S,8aR)-6-amino-2-benzyl-8-[2-(trifluoromethyl)phenyl]-1,2,3,7,8,8a-hexahydro_isoquinoline-5,7,7-tricarbonitrile
3-[N-(4-{[4-(3-carboxypropanoylamino)phenyl]sulfonyl}phenyl)carbamoyl]propanoi_c_acid
1-(phenylcarbonyl)-2-(3-pyridyl)-1,2,3,3a-tetrahydropyridino[2,3-e]indolizine-_3,3-dicarbonitrile
N-[(1E)-2-(3-phenylpyrazol-4-yl)-1-azavinyl]-2-[(3-fluorophenyl)carbonylamino]_acetamide
2-(5-acetyl-3-cyano-6-methyl(2-pyridylthio))-N-benzylacetamide

If the string is <79 characters, it can be skipped.

Thanks for the advice,

LMHmedchem
# 2  
Old 02-19-2013
Code:
sed 's/\(.\{78\}\)_\(.*\)/\1\2/' x.dat
N-{[3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]amino}(2-hydroxyphenyl)carboxamide

Search for 78 instances of any character (and remember it), followed by an underscore, and remember the rest of the line.
If found, it will be replaced by the 2 remembered patterns, leaving the underscore out.

Last edited by gary_w; 02-19-2013 at 04:43 PM..
This User Gave Thanks to gary_w For This Post:
# 3  
Old 02-19-2013
Quote:
Originally Posted by gary_w
Code:
sed 's/\(.\{78\}\)_\(.*\)/\1\2/' x.dat
N-{[3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]amino}(2-hydroxyphenyl)carboxamide

Thanks, that worked perfectly. Boy do I love sed, it's just amazing how quickly you can do complex text operations like this.

LMHmedchem
# 4  
Old 02-19-2013
Becomes faster&simpler without the .* at the end of the regexp:
Code:
sed 's/\(.\{78\}\)_/\1/' x.dat

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 all symbolic character

Hello is there a way to delete all symbolic characters using the tr command or delete everything apart from letters for example input="u;'#n] i would like echo $input to be "unix" or a way to only accept letters PLEASE HELP:wall: (4 Replies)
Discussion started by: omaral
4 Replies

4. Shell Programming and Scripting

sed to delete character 0 only when it's on its own?

Hi all I am trying to get my head around doing the following.... I have an input field that could contain either a number a blank field or a whitespace field. What I want to do is delete a 0 (zero) if it's on its own or leading the number. So:- \t0 delete the zero 0 delete the... (8 Replies)
Discussion started by: Bashingaway
8 Replies

5. Shell Programming and Scripting

Delete character from a word

Friends, I'm looking for a command that delete the first tho caractere in a word. Here is an exp : I want to replace "20091001" by "091001" or "replace" by "place" Thx, (13 Replies)
Discussion started by: newpromo
13 Replies

6. UNIX for Dummies Questions & Answers

Delete between 10th character and 20th character

Hi, I have a .txt and I need to delete the characters betwwen the 10th and 20th... How can I do that... I need to do somethink like these: %s/I don't know how to define a range between 10th and 20th character//g Can you help me... If I want the 10 first characters i do this:... (2 Replies)
Discussion started by: nuno_fbo
2 Replies

7. Shell Programming and Scripting

delete \n character

Hello. I'm next problem.. I'm a tmp file $ cat tmp word1 word2 word3 word4 and I like have word1 word2 word3 word4 I try with: $ cat tmp |sed 's/\n//' word1 word2 word3 (2 Replies)
Discussion started by: ReneVielma
2 Replies

8. Shell Programming and Scripting

Use sed to delete a character

I built a 12 million record file and made a mistake, one field is 1 character too long. The record is 40 bytes and ends always in 999. I am trying to delete the 37 character in each record. Is this possible without doing a cut and paste. (1 Reply)
Discussion started by: bthomas
1 Replies

9. UNIX for Advanced & Expert Users

How to delete a character

Hi, T think this is a question for Perderabo. If you think you know the answer you must be very good ! :) Most of us know how the make the <backspace> key backspace a character. Now how do I make the <delete> key delete a character. !! So when I press the delete key the character after... (3 Replies)
Discussion started by: davidg
3 Replies

10. UNIX for Dummies Questions & Answers

Delete first 2 character from string

Hi ! All, I have to delete first 2 characters from string. How its possible? Like string value is "2001". I required output as "01" Plaese help me. Nitin (4 Replies)
Discussion started by: nitinshinde
4 Replies
Login or Register to Ask a Question