last updated:2023/12/27
秀丸エディタでは「プログラム実行」を使うことにより、標準入力・標準出力を利用するプログラムを利用して、テキストを加工できます。
昔はlinuxのような便利なコマンドが少なくて活用しづらい機能でしたが、現在はWindowsでも便利なコマンドが増えたり、 PowerShellが導入されたことで色々な編集に活用できます。
メニューの「その他→プログラム実行」から使用できます。
「プログラム実行」で標準入出力を使うを使う方法は、2通りあります。
「第II部〜知っていると便利な秀丸の機能 プログラム実行」にある、以下の項目を参照してください。
どちらの方法を使うかは、実行するプログラムや、編集しているファイルの文字コードによります。
開いているファイルが「Shift_JIS」で、標準入力と標準出力の文字コードが「Shift_JIS」で動作するプログラム (もしくは、入出力のエンコードが起動オプションで指定可能なプログラム)である場合は、"<con"、">con" を使うのが簡単です。コマンドラインに「 <con >con」と付けて実行することで、外部プログラムの標準入力に現在の選択範囲を渡し、標準出力を選択範囲に出力できます。
実行するプログラムが、標準入出力の文字コードとしてUTF-8を期待する場合や編集しているファイルに「Shift_JISに含まれない文字」がある場合は、
"<con"、">con" は使わないでください。Shift_JISへの変換時にデータ欠落する場合があります。
その場合は、「オプション」-「詳細設定」を有効にし、エンコードを指定してください。
OSに標準であるコマンドでの実行例です。
"<con"、">con" を使っているので、「詳細設定」を有効にする場合は、「標準入力」「標準出力」も有効にし「自動」を選んでください。
選択範囲を並び替える。
起動オプションに "/R" を指定すると、逆順で出力されます。
sort /R <con >con
起動オプションに "/+<number>" を指定すると、<number>で指定した文字から比較を開始します。
sort /+5 <con >con
上記例では、5文字目から比較を行います。
hogeという文字が入った行だけを抜き出す。
起動オプションに "/I" を指定すると、大文字小文字を無視します。
findstr /I "hoge" <con >con
選択範囲の重複行を削除する。(事前にソートしておく必要があります)
$input
は powershellの自動変数で、渡されたすべての入力を列挙する列挙子が格納されます。
(標準入力の内容が入っている)
以下のような連番を選択範囲に書き出す。(「詳細設定」有効、「標準出力」を有効にして「挿入」に設定すれば、範囲選択は不要)
出力結果
1
2
3
4
5
数字を3桁にして、":"を追加したりも可能です。
powershell -c "1..5 | %{\"{0:000}:\" -f $_ }" >con
出力結果
001:
002:
003:
004:
005:
「c:\hoge」フォルダのファイル一覧を選択範囲に書き出す。
起動オプション "/b" は「ファイル名のみ出力」です。 "/on" を追加するとファイル名でソートされ出力されます。
選択範囲を行の長さでソートする。
$input
は powershellの自動変数で、渡されたすべての入力を列挙する列挙子が格納されます。
(標準入力の内容が入っている)
逆順にソートしたい場合は、Sort-Object
のオプションに -descending
を指定します。
powershell -c "$input|Sort-Object -descending { $_.Length }" <con >con