しふみんのブログ

しふみんのブログです。

ファイルの文字列をソートし直しててファイルに出力するRubyスクリプト

コマンドライン引数に指定されたファイルに書かれてある文字列をソートし直して1行ずつ新たなファイルに出力するRubyスクリプトを書いた。

ファイルの文字列をソートし直しててファイルに出力するRubyスクリプト

# -*- coding: utf-8 -*-

input_file = ARGV[0]
added_filename = '_in_line'

# 入力ファイルネームが'hoge.txt'なら出力ファイルネームは'hoge_in_line.txt'とする
output_file = File.basename(input_file, '.*') + added_filename + File.extname(input_file)

File.open input_file do |i_file|
  File.open output_file, 'w' do |o_file|
    o_file.puts i_file.read.split(/\s+/).sort
  end
end

こんなファイルを

aaa ddd
eee     ggg
       fff
    ccc hhh iii

bbb

以下のように出力し直す。

aaa
bbb
ccc
ddd
eee
fff
ggg
hhh
iii

動機として、 $ brew list で出力されたものを1行ずつ改行した形でファイルに出力したものが欲しかったので書いた。 ただ、すぐに $ brew list > hoge.txt とリダイレクトを使えば望むものが手に入ることが分かったので、今後は使うことはないと思う。