<title> 名前X </title>
のような内容の、テキストファイルが1000件ほどあります。
これを、ソフト または Linuxコマンド(SSH接続)等で
テキスト
<title> 名前X </title>
↓置換
テキスト
<title> 名前X </title>
<b> 名前X </b>( N番目 )
全ファイルを一括置換したいと思っています。
名前Xはファイル毎に違います。
N番目については、Nがカウントされて、全てのファイルを違う数字にしたいです。
こんなんどうでしょう
元ファイルはEUCとしてます。
#! /bin/csh set count = 1 #変換後のファイル置場 mkdir tmp #拡張子はてきとうに foreach x(*.html *.htm) nkf -e $x |\ sed "s/<title>\(.*\)<\/title>/<title>\1<\/title>\n<b>\1<\/b>($count番目)/" |\ sed "s/<TITLE>\(.*\)<\/TITLE>/<title>\1<\/title>\n<b>\1<\/b>($count番目)/" \ > tmp/$x @ count ++ end
こんなんどうでしょう
元ファイルはEUCとしてます。
#! /bin/csh set count = 1 #変換後のファイル置場 mkdir tmp #拡張子はてきとうに foreach x(*.html *.htm) nkf -e $x |\ sed "s/<title>\(.*\)<\/title>/<title>\1<\/title>\n<b>\1<\/b>($count番目)/" |\ sed "s/<TITLE>\(.*\)<\/TITLE>/<title>\1<\/title>\n<b>\1<\/b>($count番目)/" \ > tmp/$x @ count ++ end
とても、わかりやすいソース。有り難うございます!
さっそく、実行してみたいと思います。
今後も宜しくお願い致します。
perlとawkを使った方法です。
conv.awkというファイルを、対象のテキストファイルがあるディレクトリに配置する。
BEGIN { n = 1 } { filename = $1 if (filename != "conv.awk") { command = "perl -n -i.backup -e 's/(<title>([^<]+)<\\/title>)/\\1\\n<b>\\2<\\/b>(" n++ "番目)/; print' " filename system(command) } }
以下のコマンドを実行する。
$ /bin/ls | awk -f conv.awk
で目的の動作でしょうか?
.backupで元のファイルのバックアップを作成するはずですが、一応元ファイルはバックアップしといた方がいいです。
有り難うございます!
このような方法もあるのですねー
勉強になりました・・・
勉強のためにも 回答者様、お二人の方法、両方で試してみます。
今後も宜しくお願い致します。
とても、わかりやすいソース。有り難うございます!
さっそく、実行してみたいと思います。
今後も宜しくお願い致します。