2005年1月19日

[linux-users:104277] 制御文字、非印字文字の表示について

お願い致します。UNIX形式のテキストファイルをDOS形式に変換するとい
うbash以下のシェルをcshで書き換えています。

#!/bin/bash
# u2d.bash
set infname = "$1"
set outfnname = "$2"
cat "${infname}" | sed "s/$/`echo -ne '\015'`\" | iconv -f EUCJP -MS -t
CP932 > "${outfname}"
出典:linuxWorld (株)IDGジャパン発行 1月号 P53


これを、下記のようにしましたが、うまく動作しません。(変数名が不正ですと
表示される)

#! /bin/csh
# linux_u2d.csh
set infname = $1
set outfname = $2
cat $infname | sed -e s/$/`echo -ne '\015' `\ | iconv -f EUC-JP -t CP932
> $outfname

「linuxWorld 1月号」ではechoコマンドで制御文字の「CR」を出力し、その出
力結果を置換文字列として使用する。とありました。ここでは、UNIX形式のテキ
ストファイル(文字モード「EUC」、改行コード「LF」)において、改行コード
を除いた最後の文字の後ろを「CR」に置き換えて、DOS形式のテキストファイル
(文字コード「SJIS」、改行コード「CR/LF」)に変換させると考えます。
そのため、次のように部分分けをして実行してみたところ、

cat $infname | iconv -f EUCJP -t CP932 > $outfname はOK!
sed -e s/a/1/ $infname > $outfname はOK !
sed -e s/$/`echo -ne '\015'/ $infname > $outfname はNG!

となり、制御文字の表示のところが動作しないようです。catコマンドにあるオ
プション「-ve」を使って行末文字を表してsedをしてみたらよいかと考え、次の
ようにしましたが、
cat -ne $infname | sed -e s/$/q/ $infname >$outfname もNG!
でした。

(1)「制御文字を扱う方法についてご教示いただければ幸いです。
(2)また、man ascii によって表示される、非印字文字をechoコマンドで表
示するということは可能なのでしょうか。例えば、「A」は8進数で「101」に
なっていますので、echo *** 101 *** 、として、***に何か引数を入れると
文字の「A」表示できることは可能なのでしょうか。
 
********
野原 司
********


投稿者 xml-rpc : 2005年1月19日 10:21
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/9491
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。