cshで複数ファイルの文字列置換

置換処理だけでなく、置換対象となるファイルのバックアップ、アンドゥ、バックアップファイルの削除もオプションによって選択して実行可能です。


#!/bin/csh

@ fh = 0
@ fb = 0
@ fr = 0
@ fu = 0
@ fd = 0

if ($#argv != 0) then
switch ($1)
case -h:
@ fh = 1; breaksw
case -b:
@ fb = 1; breaksw
case -r:
@ fr = 1; breaksw
case -u:
@ fu = 1; breaksw
case -d:
@ fd = 1; breaksw
endsw
shift
endif

if ($fh == 1) then
cat << ENDLINE
Usage: ${0} [Option]
Option:
-h :help
-b arg :backup argument files
-r arg :replace argument files
-u arg :undo argument files
-d arg :delete backup argument files
ENDLINE
endif

if ($fb == 1) then
foreach infile ($*)
set bakfile = "${infile}.backup"
if (! -r $bakfile) then
cp -f $infile $bakfile
endif
end
endif

if ($fr == 1) then
foreach infile ($*)
set outfile = "${infile}.tmp"
touch $outfile
foreach line (`cat $infile`)
# 置換処理はここで行う
set line = `echo $line | perl -pe s/hoge/fuga/g`
echo $line >> $outfile
end
mv -f $outfile $infile
end
endif

if ($fu == 1) then
foreach infile ($*)
set bakfile = "${infile}.backup"
if (-r $bakfile) then
cp -f $bakfile $infile
endif
end
endif

if ($fd == 1) then
foreach infile ($*)
set bakfile = "${infile}.backup"
if (-r $bakfile) then
rm -f $bakfile
endif
end
endif

テーマ : プログラミング
ジャンル : コンピュータ

2009-05-23 : Work-Linux-Makefile/Sh/Csh : コメント : 0 : トラックバック : 0
Pagetop
コメントの投稿
非公開コメント

Pagetop
« next  ホーム  prev »

プロフィール

zive

Author:zive
大阪在住、男

ブログ検索

月別アーカイブ

FC2カウンター