なんか色々調べましたが、ソースコードを見るのが早かったような気がしました。
scala/ProcessBuilder.scala at 27da46343cd545534819300235bc64ab74958c92 · scala/scala · GitHub
冒頭のコメントにはこんなことが書いてありました。
* import scala.sys.process._ * * // Executes "ls" and sends output to stdout * "ls".! * * // Execute "ls" and assign a `Stream[String]` of its output to "contents". * val contents = Process("ls").lineStream
- !は実行して、結果を標準出力に送る。戻り値は、ステータスコード。
- 実行結果を変数に格納したいときは、 lineStreamを使う。
で、本題。diffコマンドであれこれしてみる。
scala> import sys.process._ import sys.process._ scala> val st = "diff a.txt b.txt" lineStream_! warning: there was one feature warning; re-run with -feature for details st: Stream[String] = Stream(1c1, ?) scala> st res0: Stream[String] = Stream(1c1, ?) scala> println(st.mkString("\n")) 1c1 < aaa --- > bbb scala> st.toList res2: List[String] = List(1c1, < aaa, ---, > bbb)
普通に色々できそうですね。