Convert ASCII Text, with CRLF


 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Convert ASCII Text, with CRLF
# 1  
Old 11-20-2014
Convert ASCII Text, with CRLF

1. The problem statement, all variables and given/known data:
write a script asciiFix.sh that takes an arbitrary number of file paths from the command line and carries out the same analysis on each one. If a file is not Windows ASCII, your script should do nothing to it. For each file that is Windows ASCII, your script should print the message: converting _fileName_
and should then convert the CR/LF line terminators in that file to Unix-style LF line terminators.



The attempts I have tried do not remove the ^M from the file. The script should be able to handle many file which I believe I can do by "$file"

2. Relevant commands, code, scripts, algorithms:

For example:
cp ~cs252/Assignments/ftpAsst/d3.dat wintest.txt ./asciiFix.sh /usr/share/dict/words wintest.txt fileType.sh converting wintest.txt

3. The attempts at a solution (include all code and scripts):
Code:
#!/bin/sh
file=$1
if file "$@" | grep "ASCII text, with CRLF";then
  echo "converting $file"
  sed -i 's/^M//g' "$file"
fi

I have also tried this

Code:
#!/bin/sh 
for file in "$@" 
do         
if file $file | grep "ASCII text, with CRLF"; then 
                echo "converting $file" 
                sed -i 's/^M//g' $file 
        fi   
done

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).

Last edited by kwatt019; 12-16-2014 at 10:31 AM..
# 2  
Old 11-21-2014
In a sed substitute search pattern, ^M matches an uppercase M at the start of a line, not the <carriage-return> control character that is usually displayed as the two character sequence <circumflex><M> in vi and some other utilities.

Your assignment seems to only be to remove <carriage-return> control characters that appear immediately before a <line-feed> (AKA <newline> character). You can do that by anchoring your RE to only match a <carriage-return> at end of a line.

What OS and shell are you using?

Does your system have a dos2unix command?

If you are using vi, you can enter a literal <carriage-return> character into your script, by entering the sequence CTL-V CTL-M (hold down the control (or CTL or CNTL) key, depending on your keyboard, while you press and release the V key and then press and release the M key; then release the control key.
# 3  
Old 11-21-2014
It does not have dos2unix. I have also tried 's/\r$//g' that didn't work. Would ''s//\r$//g' work? I am using vim I don't know if that will make a difference, but I am imputing ^M as ctrl-v ctrl-m. My os is Ubuntu I'm not sure which shell.

Last edited by Don Cragun; 11-21-2014 at 03:16 AM.. Reason: Add ICODE tags.
# 4  
Old 11-21-2014
What is the output from the command:
Code:
od -bc file

where file is the name of the file containing the 2nd script you showed us in your 1st post:
Code:
#!/bin/sh 
for file in "$@" 
do         
if file $file | grep "ASCII text, with CRLF"; then 
                echo "converting $file" 
                sed -i 's/^M//g' $file 
        fi   
done

This will tell us how the shell and sed will interpret the command:
Code:
sed -i 's/^M//g' $file

Please also show us the exact command line you used to invoke the script above and the exact output it produced (and please use CODE tags when showing us any sample input, output, and code).

Show us the output from the command:
Code:
file ~cs252/Assignments/ftpAsst/d3.dat wintest.txt ./asciiFix.sh /usr/share/dict/words

This will tell us whether or not the grep will find anything in the files you're processing.

Whenever you're trying to debug a shell script, consider adding the command:
Code:
set -xv

into your script just after the line:
Code:
#!/bin/sh

to trace the commands the script is executing.
# 5  
Old 12-05-2014
Sorry for thread jacking but I am working on the same assignment. I am able to use unix2dos in my script. Here is my script:
Code:
#!/bin/sh  
for file in "$@"  do         
if file $file | grep "ASCII text, with CRLF"; then              
echo "converting $file"              
dos2unix $file     
fi    
done

When the finaltest.pl is ran, this is what I get (with debugging)

Code:
Checking stage 3 
for file in "$@" 
do 
if file $file | grep "ASCII text, with CRLF"; then 
echo "converting $file" 
dos2unix $file 
fi 
done 
+ file aardvark.cpp 
+ grep ASCII text, with CRLF 
+ echo converting aardvark.cpp 
+ dos2unix aardvark.cpp dos2unix: converting file aardvark.cpp to Unix format ... 
+ + grepfile ASCII text, with CRLF  
bongo.dat 
+ + grep ASCII text, with CRLF 
file cat.dog.bak  

Failed when running: ./asciiFix.sh 'aardvark.cpp' 'bongo.dat' 'cat.dog.bak'

# 6  
Old 12-05-2014
Try this out.

Code:
#!/bin/sh
for file in "$@"  do 
   if file "$file" | grep -q "ASCII text, with CRLF"; then 
   echo "converting $file"
   dos2unix "$file" 
fi     
done

If that doesn't working say the system does not have dos2unix installed try this.


Code:
#!/bin/sh
for file in "$@"  do
     if file "$file" | grep "ASCII text, with CRLF"; then
     echo "converting $file"
     sed -i 's/^M//g' "$file"
 fi    
done

make sure you are not outputting more than asked for.

Last edited by kwatt019; 12-05-2014 at 11:08 PM.. Reason: more information.
# 7  
Old 12-05-2014
Ahh okay I understand now about too much output. Thanks for the tip Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert Hex to Ascii in a Ascii file

Hi All, I have an ascii file in which few columns are having hex values which i need to convert into ascii. Kindly suggest me what command can be used in unix shell scripting? Thanks in Advance (2 Replies)
Discussion started by: HemaV
2 Replies

2. Solaris

Convert files from binary to ASCII

I have a huge files in binary format thanks to help me in finding a way to convert these files from Binary format to ASCII format. (0 Replies)
Discussion started by: PRINCESS_RORO
0 Replies

3. Red Hat

Can't convert 7bit ASCII to UTF-8

Hello, I am trying to convert a 7bit ASCII file to UTF-8. I have used iconv before though it can't recognize it for some reason and says unknown file encoding. When I used ascii2uni package with different package, ./ascii2uni -a K -a I -a J -a X test_file > new_test_file It still... (2 Replies)
Discussion started by: rockf1bull
2 Replies

4. Shell Programming and Scripting

convert file to ascii

I have a file in below format(ISO ) and to be convert to readable (.txt/Ascii) format .send me the commands/code please sample as follows 2043010101167157001190002010011120000000002144300000000000000000000 01022_ - %rE@ U...ug  47 56   d %rE@ 01022_ - $5 fy ... (1 Reply)
Discussion started by: nalakaatslt
1 Replies

5. Shell Programming and Scripting

convert ascii values into ascii characters

Hi gurus, I have a file in unix with ascii values. I need to convert all the ascii values in the file to ascii characters. File contains nearly 20000 records with ascii values. (10 Replies)
Discussion started by: sandeeppvk
10 Replies

6. Programming

To convert UHF-8 to ASCII using C++

Hi, I have two strings aaa, bbb which contains text in UTF-8 format. I am using Solaris OS. zsh shell, emacs editor. In the shell the text are represented like "fff'''(((#ip##iii^q##1..... Example: aaa="fff'''(((#ip##iii^q##1".. I need to compare the two strings, I feel that text in this... (3 Replies)
Discussion started by: SamRoj
3 Replies

7. Shell Programming and Scripting

How to convert English text file to ASCII File?

file abc abc: English text I want to convert the above into file abc file: ascii text (1 Reply)
Discussion started by: laknar
1 Replies

8. UNIX for Advanced & Expert Users

Need to convert Binary files to ascii

Dear Experts I need to read a binary file. I know for example in byte number 3801-3804 there is a 4 byte number embeded. Is there a way to extract this number from this file and then convert it to ascii via unix?? Your help would be highly appreciated. Very Best Regards Reza (5 Replies)
Discussion started by: Reza Nazarian
5 Replies

9. UNIX for Dummies Questions & Answers

convert hex to ascii text

Is there a command to convert hex characters into their respective ascii values? (5 Replies)
Discussion started by: dangral
5 Replies

10. UNIX for Advanced & Expert Users

Convert ASCII to BINARY

Here is what I did . . . . I FTP'd several *.pdf files from a web site to a UNIX server, and did not set the transfer mode to BIN, now Adobe thinks that the documents are corrupted. Is there a way to convert the *.pdf files to Binary so that Adobe can open them again. I would just re-download... (2 Replies)
Discussion started by: pc9456
2 Replies
Login or Register to Ask a Question