＞テキスト編集を極める！！

# 第IV部〜テキスト編集を極める！！
プログラム実行を利用したテキストの加工

## プログラム実行を利用したテキストの加工

秀丸エディタでは「プログラム実行」を使うことにより、標準入力・標準出力を利用するプログラムを利用して、テキストを加工できます。

昔はlinuxのような便利なコマンドが少なくて活用しづらい機能でしたが、現在はWindowsでも便利なコマンドが増えたり、 PowerShellが導入されたことで色々な編集に活用できます。

メニューの「その他→プログラム実行」から使用できます。

- 【１】プログラム実行の方法
- 【２】実用例

### 【１】プログラム実行の方法

「プログラム実行」で標準入出力を使うを使う方法は、２通りあります。

「第II部〜知っていると便利な秀丸の機能　プログラム実行」にある、以下の項目を参照してください。

- 【２】プログラム実行の方法その1
- 【３】プログラム実行の方法その2

どちらの方法を使うかは、実行するプログラムや、編集しているファイルの文字コードによります。

開いているファイルが「Shift_JIS」で、標準入力と標準出力の文字コードが「Shift_JIS」で動作するプログラム (もしくは、入出力のエンコードが起動オプションで指定可能なプログラム)である場合は、"<con" ">con" を使うのが簡単です。コマンドラインに「 <con >con」と付けて実行することで、外部プログラムの標準入力に現在の選択範囲を渡し、標準出力を選択範囲に出力できます。

実行するプログラムが、標準入出力の文字コードとしてUTF-8を期待する場合や編集しているファイルに「Shift_JISに含まれない文字」がある場合は、 "<con"、">con" は使わないでください。Shift_JISへの変換時にデータ欠落する場合があります。
その場合は、「オプション」-「詳細設定」を有効にしエンコードを指定してください。

- 「オプション」-「詳細設定」を有効にした場合は、「標準入力」「標準出力」も有効にしてください。「自動」を選んでおけば、"<con" ">con" を使う場合と同じになります。
- 範囲選択していない状態で、"<con" ">con" を使うと、思わぬ結果になるので注意すること。
- 範囲選択をしないで、カーソル位置に標準出力を挿入できます。
  「オプション」-「詳細設定」で、「標準出力」を有効にし、「挿入」を選んでください。

### 【２】実用例

OSに標準であるコマンドでの実行例です。

"<con" ">con" を使っているので、「詳細設定」を有効にする場合は、「標準入力」「標準出力」も有効にし「自動」を選んでください。

"PowerShell" の実行ファイル名は Ver.6 以降 "pwsh.exe" になっています。 PowerShell Ver.6 以降を使う場合は、 "PowerShell" を "pwsh" に読み替えて実行してください。

sort <con >con
  選択範囲を並び替える。 起動オプションに "/R" を指定すると、逆順で出力されます。

      sort /R <con >con

  起動オプションに "/+<number>" を指定すると、<number>で指定した文字から比較を開始します。

      sort /+5 <con >con

  上記例では、5文字目から比較を行います。
findstr "hoge" <con >con
  hogeという文字が入った行だけを抜き出す。 起動オプションに "/I" を指定すると、大文字小文字を無視します。

      findstr /I "hoge" <con >con

powershell -c "$input | Get-Unique" <con >con
  選択範囲の重複行を削除する。(事前にソートしておく必要があります) `$input` は powershellの自動変数で、渡されたすべての入力を列挙する列挙子が格納されます。 (標準入力の内容が入っている)
powershell -c "1..5" >con
  以下のような連番を選択範囲に書き出す。(「詳細設定」有効、「標準出力」を有効にして「挿入」に設定すれば、範囲選択は不要) 出力結果

      1
      2
      3
      4
      5

  数字を3桁にして、":"を追加したりも可能です。

      powershell -c "1..5 | %{\"{0:000}:\" -f $_ }" >con

  出力結果

      001:
      002:
      003:
      004:
      005:

cmd /c "dir /b c:\hoge" >con
  「c:\hoge」フォルダのファイル一覧を選択範囲に書き出す。 起動オプション "/b" は「ファイル名のみ出力」です。 "/on" を追加するとファイル名でソートされ出力されます。
powershell -c "$input | Sort-Object {$_.Length}" <con >con
  選択範囲を行の長さでソートする。 `$input` は powershellの自動変数で、渡されたすべての入力を列挙する列挙子が格納されます。 (標準入力の内容が入っている) 逆順にソートしたい場合は、`Sort-Object` のオプションに `-descending` を指定します。

      powershell -c "$input|Sort-Object -descending { $_.Length }"  <con >con

ページトップ 目次に戻る