[ このメッセージへの返事 ]
[ 返事を書く ]
[ home.html ]
投稿者:
68user @ oryo.inforyoma.or.jp on 97/9/21 04:50:45
In Reply to: どなたかSEDで変換した後保存する方法教えて下さい
posted by まなう゛ @ ppp9e9a.pppp.ap.so-net.or.jp on 97/9/20 23:18:04
ここではUNIXと仮定します。
UNIX系のシェル(csh、tcsh)は基本的にワイルドカードの扱いが
MS-DOSと違います。
MS-DOSではワイルドカードの展開は各アプリケーションにまかされて
いますが、UNIXではシェルが展開した後アプリケーションに渡します。
# アプリケーションに未展開のワイルドカードを渡したかったら
# クオートします。例えば
# find . -name \* -print
だから
> sed -f スクリプトファイル *.* > *.*
の最初の*.*と*.*は同じ文字列が展開されますし、
sed -f スクリプトファイル *.* > *.*.sed
としても *.*.sed は現在カレントディレクトリに存在する *.*.sed に
展開されてしまいます。つまりMS-DOSでいう
ren *.doc *.dat
はできません。こういう場合 csh、tcsh系なら foreach を使います。
(1)
X68000->zxr400:{40} foreach i ( * )
foreach? sed -f script $i > $i.sed
foreach? end
(2)
X68000->zxr400:{40} foreach i ( * )
foreach? sed -f script $i > "$i"sed
foreach? end
# (2)は sed -f script $i > $ised だと$isedというシェル変数と認識されるので
# クオートしてます。(1)は . があるから大丈夫。
sh、bash系なら
$ for i in *
> do sed -f script $i.sed
> done
ですね。
あと、ご存知かもしれませんが UNIXでは * は先頭のドット以外の文字列を
表します。
% ls
.cshrc bin sample.c
% echo *
bin sample.c
% echo .*
.cshrc
% echo *.*
sample.c
となります。
|