6

Linefeed( )をCarriage Return+LineFeedLineFeed.shに変換する機能を実行するという名前のシェルスクリプトファイルがあります。LFWindowsのバッチファイルでも同じことをしたいと思います。出来ますか?

Linuxシェルファイル

E_WRONGARGS=65
cat OutputList|while read -r Line 
do 
if [ -z "$Line" ]
then
echo "Usage: `basename $0` filename-to-convert"
exit $E_WRONGARGS
fi
NEWFILENAME=$Line.unx
CR='\015'  # Carriage return.
       # 015 is octal ASCII code for CR.
       # Lines in a DOS text file end in CR-LF.
       # Lines in a UNIX text file end in LF only.
tr -d $CR < $1 > $NEWFILENAME // here its deleting CR but i need to append LF
# Delete CR's and write to new file.
done
echo "Original DOS text file is \"$1\"."
echo "Converted UNIX text file is \"$NEWFILENAME\"."
exit 0
4

2 に答える 2

13

このウィキペディアのページで 1 つの方法を見つけることができます。

TYPE unix_file | FIND "" /V > dos_file

読み取り元と同じファイルに出力をリダイレクトできないことに注意してください。これはほとんどすべてのシステムとシェルに当てはまるため、追加の名前変更が必要です。

ここで重要なのは、typeLF の行末を読み取る方法を知ってfindおり、CRLF に変換することです。type単独では、出力に対して何も実行しません (ファイルの内容を単にダンプするコマンドを使用するのは良くないため、そうすることが想定されています :-))。

于 2010-06-24T18:19:53.100 に答える