Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4412
  • Last Modified:

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
0
aflat362
Asked:
aflat362
  • 6
  • 5
1 Solution
 
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
 
aflat362Author Commented:
I'm running AIX 5.2 ml 4
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
ravenplCommented:
try:
cat file.txt | perl -ne 'y/\r//d; print'
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

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 6
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now