Windows上で巨大なテキストファイルを分割する

ソフト開発をしていると膨大なログファイルを扱うことがありますが、大きなテキストファイルは扱いが大変です。このような場合、PowerShellで以下の様にすると簡単に分割でき、扱いも楽になります。

$i=0; cat <分割対象テキストファイル> -ReadCount <分割行数> | % { $_ > <分割後テキストファイルのPrefix>$i.txt;$i++ }

ただし、CSVファイルなど先頭の数行がヘッダ行の場合だと単純な分割ではヘッダ情報がなくなるため、手動でヘッダをコピーしなくてはならず、少々使い勝手が悪いです。

この問題を解決したスクリプトファイルが以下。分割したテキストファイルのそれぞれに共通ヘッダを追加できるようにし、出力ファイルの場所を指定できるようにもしています。$lineのデフォルト値である’1048576’はExcelで扱えるCSVの最大行数になります。

SplitText.ps1:

Param(
    [String]$text_file_path,
    [int]$lines=1048576,
    [String]$output_directory,
    [int]$header
)

############
# Debug #
############
if( [string]::IsNullOrEmpty($text_file_path) ){
    $text_file_path = "S:\ScriptDevelopment\SplitText.ps1\Sample.csv"
}

if( $lines -eq 0 ){
    $lines = 1048576 #Max line number of Excel
}

if( $header -le 0 ){
    $header = 0
}

if( ![string]::IsNullOrEmpty($output_directory) ){
    if( -Not(Test-Path $output_directory) ){
        New-Item $output_directory -ItemType Directory > $null
    }
}

############
# Constant #
############
#[String]$text_file = Split-Path -Leaf ${text_file_path}
[String]$base_name = [System.IO.Path]::GetFileNameWithoutExtension(${text_file_path})
[String]$extention = [System.IO.Path]::GetExtension(${text_file_path})
[String]$file_path = Split-Path -Parent ${text_file_path}

########
# main #
########

#read header
[String]$header_lines=""
[System.IO.StreamReader]$stream_reader = New-Object System.IO.StreamReader($text_file_path)
[int]$read_count=1
while( $null -ne ($stream_line = $stream_reader.ReadLine()) ) {
    if( $read_count -gt $header ){ break }
    $header_lines += $stream_line + "`r`n"
    $read_count++
}
$stream_reader.Close()

#output
$read_count = 0;
[int]$file_number=0
[int]$max_output_lines = $lines - $header
[System.IO.StreamReader]$stream_reader = New-Object System.IO.StreamReader($text_file_path)
while( $null -ne ($stream_line = $stream_reader.ReadLine()) ) {
    if( $read_count -ge $header ){ 
        if( ( ( $read_count - $header ) % $max_output_lines ) -eq 0 ){
            if( $null -ne $stream_writer ){ $stream_writer.close() }
            $file_number++
            [string]$output_file_name=${base_name}+"_"+${file_number}+${extention}
            Write-Output ${output_file_name}
            if( [string]::IsNullOrEmpty($output_directory) ){
                [string]$output_file_path=${file_path}+"\"+${output_file_name}
            } else {
                [string]$output_file_path=${output_directory}+"\"+${output_file_name}
            }
            $stream_writer = New-Object System.IO.StreamWriter( $output_file_path, $false, [Text.Encoding]::GetEncoding("UTF-8") )
            $stream_writer.Write($header_lines)
        }
        $stream_writer.WriteLine($stream_line)
    }
    $read_count++
}
if( $null -ne $stream_reader ) { $stream_reader.Close() }
if( $null -ne $stream_writer ) { $stream_writer.Close() }

Code language: PHP (php)

以下のようなバッチファイルを作りPowershellスクリプトと同じ場所に置くと、Drag&Dropでテキストファイルを分割できます。

Split.bat:

@echo off

cd /d %~dp0

SET LINES=1048576
SET HEADER=1

for %%f in (%*) do (
    setlocal
    echo powershell -NoProfile -ExecutionPolicy Unrestricted .\SplitText.ps1 "-text_file_path \"%%f\" -lines %LINES% -header %HEADER% -output_directory \"%%~dpnf\""
    echo.
    CALL powershell -NoProfile -ExecutionPolicy Unrestricted .\SplitText.ps1 "-text_file_path \"%%f\" -lines %LINES% -header %HEADER% -output_directory \"%%~dpnf\""
    echo.
)

pause
Code language: PHP (php)

至高の麻婆茄子

調理道具

  • 深底フライパン

材料(3人分)

  • 茄子   3本(300gほど)
  • にんにく 2片
  • 長ネギ  1/2本
  • 豚ひき肉 140g
  • 塩    小さじ1/4
  • サラダ油 適量(フライパン底1cmほどの量)
  • 豆板醤  大さじ1
  • 甜麵醬  大さじ1
  • 水    200cc
  • 創味シャンタン 小さじ1弱 ※鶏ガラスープだし小さじ1で代用可
  • 酒    大さじ1
  • 醤油   小さじ1
  • ごま油  小さじ1
  • ラー油  小さじ1
  • 水溶き片栗粉(片栗粉大さじ1と水大さじ2を混ぜたもの)
  • 酢    小さじ1/2
  • ☆仕上げに追いラー油と小ネギ適量
  • ★味変で花椒

下準備

  • にんにくをみじん切りにする
  • 長ネギをみじん切りにする
  • 油が染み込むようにナスの表面に切れ目を入れて乱切りにする
  • ナスの皮を下に向けて並べ、塩をふり数分おいて水分を出し、クッキングペーパーで吸い取る

調理

ナスを揚げる

  1. 油を深さ1cm程度フライパンに入れて温める
  2. ナスを入れて表面に焦げ目が付くまで素揚げする
  3. ナスを取り出す
  4. ひき肉を同じフライパンで炒めるため、フライパンから油を取り出す

肉味噌を作る

  1. フライパンに豚バラ肉を薄く敷いて焼く。
  2. 片面がやや焦げるくらいに焼けたら、ひっくり返してカリッとなるまで焼く
  3. にんにくを入れて香りが出るまで炒める
  4. 豆板醤を入れて香りが出るまで炒める
  5. 甜麺醤を入れてさっと炒める
  6. 水200ccと創味シャンタン(もしくは鶏ガラスープダシ)小さじ1、酒大さじ1を入れて沸騰させる
  7. 醤油・ラー油それぞれ小さじ1を入れる
  8. ナス・ネギを入れて絡める(ネギは少し残す)
  9. 水溶き片栗粉(大さじ1+水大さじ2)を入れ、とろみが出るまで温める
  10. 酢小さじ1/2を入れて温める
  11. 器に入れ、ネギを添えて出来上がり

メモ

  • 味変に追いラー油をいれるといいです。
  • とろみが強すぎる場合はお湯を足してとくといいです。

参考レシピ

ifttt.comからWordPressへConnectに失敗する場合の対処法

ifttt.comからWordpressへConnectに失敗する場合、レンタルサーバーを利用している前提での解決方法はネット上に数多くあります。しかし、自前サーバーの場合の対処方法については解決方法が見つからず、対応に難儀しましたのでメモしておきます。

問題解決方法は下記のとおりです。

  • http://…形式でアクセスできるようにしておく

ifttt.comはhttpで接続しようとするため、httpでlogin画面が表示されない状態だと上記のようなエラーが表示されます。私の場合はhttpsのみでアクセスできるようにしていたため、エラーとなりました。

なお、http://…->https://…へフォワードしている場合(http://…形式で表示されない)も同様のエラーとなります。

チョコレートスコーン

調理道具

  • ボウル大
  • オーブンレンジ、またはオーブン

材料(ちびスコーン16個分)

  • 薄力粉…260g
  • ベーキングパウダー…大さじ1(10g)
  • 塩…小さじ1/3
  • 砂糖…60g
  • 無塩バター…60g
  • 板チョコ…1枚
  • 卵…1個
  • 牛乳(豆乳)…大さじ4

下準備

  • ボウル大に薄力粉、砂糖、ベーキングパウダー、塩をふるっておく
  • 板チョコを刻む
  • バターを1cm角に切る
  • 卵を小皿で溶き、牛乳を混ぜておく
  • ラップを2枚敷いておく

調理

タネをつくる

  1. 手をよく乾かしておく
  2. ボウルにバターを入れる。
  3. バターに粉をまぶしながら手ですり合わせ、ぽろぽろのパン粉状にする。
  4. 刻んだチョコを加えて混ぜる
  5. 生地の中心にくぼみを作り、牛乳・卵の溶液を入れる
  6. くぼみの周囲をくずし全体を大きく混ぜる
  7. タネを2等分してラップに乗せ、厚さ1cmの1:2の長方形にまとめる。
  8. 30分冷やす

焼く

  1. オーブンレンジを170度で7分予熱しておく
  2. まな板に小麦粉をふる
  3. タネをおき三角形状に8等分する。2枚あるので合計16個になる。
  4. テーブルに並べて170度で18分焼く。2段で焼いている場合は9分後に上下前後逆にして、満遍なく焼くこと。
    オーブンを使う場合は650W両面焼きで20分弱でよい。
  5. 表面がこんがり焼けたら外に出す。
  6. 粗熱をとって出来上がり

メモ

  • レンジ内の焼く位置によって焼きムラがあるので、焼いている間に位置を変えるといいです。

参考レシピ

https://cookpad.com/recipe/186658

レモンステーキ

調理道具

  • ボウル小(ソースを混ぜる)
  • フライパン大(肉を焼く)

材料(1人分)

ステーキ肉

  • 薄切り牛肉(お好みの部位でOKです) 150g
  • 玉ねぎ 1/4個
  • カイワレ大根 1/4パック
  • レモン 1/4個
  • 牛脂 5g
  • バター 5g
  • 締めのご飯 お好みで

ソース ※市販のしょう油味のハンバーグソースで代用可能

  • しょう油 大さじ6
  • 砂糖 大さじ2
  • みりん 大さじ1
  • 日本酒 大さじ2
  • レモン果汁(もしくは酢) 大さじ2
  • 玉ねぎすりおろし 1/3個分
  • おろしにんにく 小さじ1/2
  • 黒こしょう 小さじ1/3

下準備

  • ソース用の玉ねぎを薄切りにして、水にさらしてからザルに上げ、しっかり水気を切る。
  • 玉ねぎとソースを混ぜる

調理

肉を焼く

  1. フライパンに牛脂とバターを入れて中火にかける
  2. 牛脂とバターが溶け、煙が出る直前に弱火にし、牛肉を重ならないように入れる
  3. 1のソースを大さじ3入れて、ソースが沸騰し、牛肉の色が変わりはじめるまで待つ。
  4. 牛肉に赤身があるうちに返しレモンを絞る

ソース飯をつくる

  1. 肉を食べ終わったら、フライパンにバターとソースの残りを入れて日にかける
  2. ご飯を入れて混ぜてできあがり

メモ

  • 特になし

参考レシピ