在ruby中按姓氏订购电子邮件地址文件?

时间:2014-03-06 21:30:08

标签: ruby file sorting

我有一个逐行列出的文件:

first.last@example.com
first.last@example.com
last@example.com...

请注意,有些地址没有名字,在这种情况下,它只是姓氏。

如何编写一个简单的Ruby脚本来读取此文件(称之为email.txt) 并按姓氏按顺序将其写回文件?

1 个答案:

答案 0 :(得分:3)

将其放入文件中,例如sort_by_last.rb

puts IO.readlines('email.txt').sort_by { |e| e.match(/[^\.]+(?=@)/)[0].downcase }

然后运行它:

ruby sort_by_last.rb > emails_sorted.txt

对于变量文件名

sort_by_last.rb的内容设置为

puts STDIN.readlines.sort_by { |e| e.match(/[^\.]+(?=@)/)[0].downcase }

然后运行:

ruby sort_by_last.rb < email.txt > emails_sorted.txt