人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

テキスト
<title> 名前X </title>

のような内容の、テキストファイルが1000件ほどあります。
これを、ソフト または Linuxコマンド(SSH接続)等で

テキスト
<title> 名前X </title>

↓置換

テキスト
<title> 名前X </title>
<b> 名前X </b>( N番目 )


全ファイルを一括置換したいと思っています。
名前Xはファイル毎に違います。
N番目については、Nがカウントされて、全てのファイルを違う数字にしたいです。

●質問者: mig
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Linux SSH カウント コマンド ソフト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ita
●50ポイント ベストアンサー

こんなんどうでしょう

元ファイルは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
◎質問者からの返答

とても、わかりやすいソース。有り難うございます!

さっそく、実行してみたいと思います。

今後も宜しくお願い致します。


2 ● smeghead
●50ポイント

perlとawkを使った方法です。

conv.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で元のファイルのバックアップを作成するはずですが、一応元ファイルはバックアップしといた方がいいです。

◎質問者からの返答

有り難うございます!

このような方法もあるのですねー

勉強になりました・・・

勉強のためにも 回答者様、お二人の方法、両方で試してみます。

今後も宜しくお願い致します。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ