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

文章内の指定した文字より前にある文を全削除したい

・メモ帳などの文章内で、指定した文字より前にある(上にある)文章を全削除。または指定した文字より後にある(下にある文章を全削除)が可能になるソフトがあれば教えてください。
これをフォルダ内にある複数のファイルに対して一括で処理したいです。

例えば以下のようなことです。
------------------------------------------------
:メモ帳ファイル(1) の本文

今日は買い物をした。とても疲れたが楽しかった。
休日だったので人がとても多かった。

明日のスケジュールは朝の7時に起きて、学校に向かう。
-------------------------------------------------
例えば「明日の」という文字より上の文章はすべて削除というルールを与えるとします。
「今日は?」から「多かった」まで削除という形です。
すべてのファイルに「明日の」という語句は入っているので、それを指定して、それより前にある言葉はすべて削除にするという設定で処理を行いたいです。また指定した語句より後にある語句もすべて削除という設定もできれば助かります。

●質問者: kafeeen
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● freemann
ベストアンサー

Windowsであれば、Powershellで可能です。

param([switch] $r, $in,$ex,$regex)

function funcReplace{
Param([string] $path, [string] $regex)

$enc = [System.Text.Encoding]::GetEncoding("Shift-JIS")
$stream = new-object System.IO.StreamReader($path, $enc)
$text = $stream.ReadToEnd()
$stream.Close()

$ostream = new-object System.IO.StreamWriter($path, $false, $enc)
$ostream.Write( ($text -replace $regex, "") )
$ostream.Close()
}


if($r -eq $false){
Get-ChildItem * -Include $in -exclude $ex | %{ funcReplace -p $_ -r $regex}
}else{
Get-ChildItem * -Include $in -recurse -force -exclude $ex | %{ funcReplace -p $_ -r $regex}
}

上記のコードを、Replace.ps1というファイルに保存したとすると、

Replace.ps1 -r -in *.txt (?s:^.*?(?:=明日の))

で行けます。
一応私の環境で試してはいますが、本番をする前にコピーしたファイルで試してみてからにしてください。

関連質問

●質問をもっと探す●



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