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

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


#!/bin/sh

help()
{
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
}

backup()
{
for infile in $*; do
bakfile="${infile}.backup"
if [ ! -r $bakfile ]; then
cp -f $infile $bakfile
fi
done
}

replace()
{
for infile in $*; do
outfile="${infile}.tmp"
> $outfile
for line in `cat $infile`; do
# 置換処理はここで行う
line=`echo $line | perl -pe s/hoge/fuga/g`
echo $line >> $outfile
done
mv -f $outfile $infile
done
}

undo()
{
for infile in $*; do
bakfile="${infile}.backup"
if [ -r $bakfile ]; then
cp -f $bakfile $infile
fi
done
}

del()
{
for infile in $*; do
bakfile="${infile}.backup"
if [ -r $bakfile ]; then
rm -f $bakfile
fi
done
}

while getopts hbrud opt; do
case ${opt} in
h) help;;
b) shift; backup $*;;
r) shift; replace $*;;
u) shift; undo $*;;
d) shift; del $*;;
esac
done

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

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

Pagetop
« next  ホーム  prev »

プロフィール

zive

Author:zive
大阪在住、男

ブログ検索

月別アーカイブ

FC2カウンター