How to replace special characters?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to replace special characters?
# 22  
Old 11-04-2012
Your mainframe originated text has four "special" characters in it: 2 x (^M) and 2 x (M-^E).
^M (control M) is one (of many) representation of the <carriage reurn> ASCII character, others are <CR>, 0x0D (hexadecimal), \0015 (octal), or 13 (decimal).
M-^E represents <Meta><control>E, which is the fifth character above the 128 (ASCII) limit, equivalent to 0x85 (hex), \0205 (oct), or 133 (dec).
So this is what you need to find and replace: a pattern of
^M,M-^E, ^M, M-^E
- or -
0x0D,0X85,0x0D,0x85
- or -
\0015,\0205,\0015,\0205.
Most of the proposals given can do that but some where doing it only partly. Sometimes, although, you need to adapt the way the pattern is communicated to the resp. command.
# 23  
Old 11-04-2012
Below a simple example just to help you to understand in which way the 205 sequence is removed from a simple string (here : 'AA')

See the command that ares paste and pay attention to the result it gives :

Code:
$ echo -e "A\0205A" | cat -v
AM-^EA
$ echo -e "A\0205A" | tr -d '\205' | cat -v
AA
$ echo -e "A\0205A" | od -bc
0000000 101 205 101 012
          A 205   A  \n
0000004
$ echo -e "A\0205A" | tr -d '\205' | od -bc
0000000 101 101 012
          A   A  \n
0000003
$

# 24  
Old 11-04-2012
Code:
awk '{gsub(sprintf("%c%c%c%c",13,133,13,133),"")}1'

will remove your pattern form your file.
# 25  
Old 11-05-2012
Quote:
Originally Posted by RudiC
Code:
awk '{gsub(sprintf("%c%c%c%c",13,133,13,133),"")}1'

will remove your pattern form your file.
That's taking the scenic route to your destination. AWK strings and regular expressions both support octal escape sequences.

Since the string generated is a constant, there's no need for sprintf. Just use a simple string literal:
Code:
sprintf("%c%c%c%c", 13, 133, 13, 133) --> "\15\205\15\205"

However, why even use a string at all when the first parameter to gsub is a regular expression?
Code:
gsub(/\15\205\15\205/, "")

Regards,
Alister
# 26  
Old 11-05-2012
I like scenic routes, esp. along the coast, esp. during sunset... thanks for pointing out. I was a bit short sighted...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Replace Pattern with another that has Special Characters

Hello Team, Any help would be much appreciated for the below scenario: I have a sed command below where I am trying to replace the contents of 'old_pkey' variable with 'new_pkey' variable in a Soap request file (delete_request.txt). This works fine for regular string values, but this new_pkey... (8 Replies)
Discussion started by: ChicagoBlues
8 Replies

2. UNIX for Advanced & Expert Users

How to replace special characters?

Hi Team, I have data like this. |*|.5|*|0.2|*|A.B|*| Would like to add zero (0) before the decimal point where there is no zero as |*|0.5|*|0.2|*|A.B|*| How to replace |*|. with |*|0. I tried below command which didn't work echo '|*|.5|*|0.2|*|A.B|*' | sed... (4 Replies)
Discussion started by: Ravi.K
4 Replies

3. Shell Programming and Scripting

Help to replace the string with special characters

{"name":"alR_pl-ENVIRONMENT_192_168_211_123_sDK_PROVISION_7","description":"aLR_pl-ENVIRONMENT_192_168_211_123_sDK_PROVISION_7","json_class":"Chef::Role","default_attributes":{},"override_attributes":{"yoapp":{"jboss":"5.1.0","port":"2243","warname":"soap","datacenter":"alR","ip":"192.168.211.123","... (3 Replies)
Discussion started by: nikhil jain
3 Replies

4. Shell Programming and Scripting

Replace special characters with backslash and character

Hi, I have a string wherein i need to replace special characters with backslash and that character. Ex: If my string is a=qwerty123@!, then the new string should be a_new=qwerty123\@\!\, Thanks (3 Replies)
Discussion started by: temp_user
3 Replies

5. Shell Programming and Scripting

Replace special characters with Escape characters?

i need to replace the any special characters with escape characters like below. test!=123-> test\!\=123 !@#$%^&*()-= to be replaced by \!\@\#\$\%\^\&\*\(\)\-\= (8 Replies)
Discussion started by: laknar
8 Replies

6. Shell Programming and Scripting

Replace special characters

I have a line ending with special character and 0 The special character is the field separator for this line in VI mode the file will look like below, but while cat the special character wont display i know the hexa code for the special character ^_ is \x1f and ascii code is \0037, ... (0 Replies)
Discussion started by: ratheeshjulk
0 Replies

7. Solaris

How to replace special characters in vi?

Hi , I want to replace the special characters in the file. For eg: cat abc 1234/4455/acb 234/k/lll/ 234`fs`fd I want to replace / and ` with the letter a and the output should like below. How to achieve this. 1234a4455aacb 234akallla 234afsafd (2 Replies)
Discussion started by: rogerben
2 Replies

8. Shell Programming and Scripting

Using sed to replace special characters

Hi everyone I have file1 contains: '7832' ' 8765 6543 I want a sed command that will format as: '7832' , '8765' , '6543' I tried sed -e s/\'//g -e 's/^*//;s/*$//' file1 > file2 sed -e :a -e '$!N; s/\n/ /; ta' file2 which gives: 7832 8765 6543 I need some help to continue with... (5 Replies)
Discussion started by: nimo
5 Replies

9. UNIX for Dummies Questions & Answers

Find and replace special characters in a file

HI All I need a shell script ehich removes all special characters from file and converts the file to UTF-* format Specail characters to be removed must be configurable. strIllegal = @"?/><,:;""'{|\\+=-)(*&^%$#@!~`"; Please help me in getting this script as my scripting skilla are... (2 Replies)
Discussion started by: sujithchandra
2 Replies

10. UNIX for Dummies Questions & Answers

Replace Special characters in a file

Hi, I have a data like this in a file, 402003279034002000100147626030003300010000000000002000029000000 ær^M^\MÍW^H I need to replace those special char to some other char like # or $ Is there any ways to do it... I tried commands tr,sed and many but it was not able to replace because... (1 Reply)
Discussion started by: solai
1 Replies
Login or Register to Ask a Question