LoginSignup
1
1

テキストファイルに行番号を挿入したい

Last updated at Posted at 2024-05-25

やりたいこと

  • テキストファイルの各行に、行番号を挿入したい

image.png

前提条件

  • Windows環境とする
  • なるべく単純な方法で実現したい
  • テキストファイルは大量にあり、なるべく短時間で処理したい

image.png

方法①:Windowsコマンドを使用する方法

findstrコマンドの\nオプションが、行番号を追加する機能であることを利用したもの
これにforコマンドを組合わせることで、大量のテキストファイルを処理する

Windowsコマンド

同じファイルに上書き保存する方法が分からなかったので、元のファイル名に「_」を付けたファイルに出力しています。

 元のファイル名   :C:\work\files\filename.txt
 出力されるファイル名:C:\work\files\_filename.txt

for /r %i in (*.*) do (findstr /n /r .* %~fi > %~pi_%~ni%~xi)
  • forコマンド
    • /rオプション:サブディレクトリを再帰処理する
  • findstrコマンド
    • /nオプション:行番号を追加する
      • ※参考:findコマンドにも同様のオプションがある
    • /rオプション:正規表現を使用する
    • その他(オプション構文)
      • %~fi:フルパスを意味する
      • %~ni:ファイル名を意味する
      • %~xi:拡張子を意味する
  • 補足
    • 本コマンドをバッチファイルとして実行する場合、変数名の%を1つ増やして、%%iにする必要があります

方法②:サクラエディタとWindowsコマンドを組合わせたもの

サクラエディタの機能「選択範囲内全行行番号付きコピー Ctrl+:」を利用したもの
これにWindowsコマンドを組合わせることで、大量のテキストファイルを処理する

サクラエディタのマクロ

1つのテキストファイルに、行番号を入れるマクロです。
キーマクロの記録で生成したコードを一部修正して作成しました。
引数(0)が多いですが、決まり文句みたいなものらしいです。

//ファイル名:addLineNum.mac

S_SelectAll(0);					// すべて選択
S_CopyLinesWithLineNumber(0);	// 選択範囲内全行行番号付きコピー
S_Paste(0);						// 貼り付け
S_ReDraw(0);					// 再描画
FileSave();						// 上書き保存
WinClose();						// 閉じる

Windowsコマンド

サクラエディタのマクロを、大量のファイルに再帰的に実行するためのものです。
各パスは実行環境に合わせて修正が必要です。

rem ファイル名:repeatSakuraMacForEachFile.bat

cd C:\work\files
for /r %%i in (*.*) do (call :method %%i)
exit
:method
"C:\Program Files (x86)\sakura\sakura.exe" %1 -M=C:\work\addLineNum.mac
goto :eof

引用元

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1