Mac/Linux で次のコマンドを実行した場合と同じ出力を Scala で取得しようとしています。
ps -ef | egrep "(mongo|mysql|rabbitmq)"
これは私の実装ですが、エレガントなものを探しています。
import sys.process._
import scala.collection.mutable.HashSet
object Regex {
val set = new HashSet[String]
val logger = ProcessLogger(
(o: String) => """(mysql|mongo|rabbitmq)""".r findAllIn o foreach (set += _),
(e: String) => println(e))
"ps -ef " ! logger
println(set)
}
私が試みていた別のアプローチは、ProcessLogger から "started" 関数を呼び出すことでしたが、正しく動作させることができませんでした。
val Procs = """(mysql|mongo|rabbitmq)""".r
def started(i: String) = i match {
case Procs(p) => p
case _ => null
}
ありがとう。