Script to change CR LF to LF -- 0D 0A to 0A

I'm trying to get a script written to change the carrige return linefeed characters to linefeed characters

I have a file where all lines end with Hex 0D 0A  I want them to end with 0A

I tried using sed to do a search and replace - something like this:

sed -e 's/\x0D/whatever/' test.txt > test.new

Search for 0d and replace with "whatever"

I just wanted to get this working first - Anyway - sed runs without error but apparetnly can't find any 0D in my file
even though I know the hex character exists.

Thanks
LVL 3
aflat362Asked:
Who is Participating?
 
ravenplConnect With a Mentor Commented:
try:
cat file.txt | perl -ne 'y/\r//d; print'
0
 
jkrCommented:
Don't reinvent the wheel, 'recode' or 'dos2unix' can do that, e.g.

dos2unix test.txt test.new

recode ibmpc..lat1 text.txt > test.new
0
 
aflat362Author Commented:
I don't have either of those executables . . .

[x67167] dbimg1:/home/x67167) dos2unix
ksh: dos2unix:  not found.
[x67167] dbimg1:/home/x67167) recode
ksh: recode:  not found.

0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
aflat362Author Commented:
I'm running AIX 5.2 ml 4
0
 
aflat362Author Commented:
hmm.

I don't have perl installed.  

I'd like to get this working with the tools I have:

shell (korn, bourne or C)
awk
sed

Thanks for the posts.
0
 
aflat362Author Commented:
nevermind.  I do have perl.

This may work for me.

cat test.txt | perl -ne 'y/\r//d; print' > test.new

Can you explain what the y/\r//d;  part of this command is doing?

or point me to a reference?

Thanks
0
 
ravenplCommented:
cat file.txt | sed -e 's/\r//'
#but please verify that it in fact removes the char...
0
 
ravenplCommented:
Bots, sed and perl s/// or y///d searches for given character, then rplaces with replaement char(or removes if no replacement found
y/ab/c/d # changes each occurance of 'a' to 'c' and remoes any 'c'.
0
 
ravenplCommented:
removes any 'b' character - dorry for mistake above.
0
 
aflat362Author Commented:
Ok, so for this example it searches for \r which must equate to 0D 0A and replaces it with what? null?

what's up with the "d"?

cat test.txt | perl -ne 'y/\r//d; print' > test.new

Thanks
0
 
ravenplCommented:
in fact - not really. It searched for any \r and removes. 'd' stands for delete found but not replaced characters.
For more please see: man perlop, operation 'tr' or 'y'
0
 
aflat362Author Commented:
Thanks!
0
All Courses

From novice to tech pro — start learning today.