Как я могу вывести необработанный текст, правильно отформатированный для чтения и хранения в Elixir?

Мне нужен вывод команды ниже, т.е. "* master\n remotes/origin/HEAD -> origin/master\n remotes/origin/master\n" для вывода для чтения.

iex(26)> System.cmd "git", ["-C", "/home/vonhabsi/workpad/Cuis/.git","branch","-a"]  
{"* master\n  remotes/origin/HEAD -> origin/master\n  remotes/origin/master\n",     
 0}  

то есть в форме

* master                              
  remotes/origin/HEAD -> origin/master
  remotes/origin/master               

Этот System.cmd документ добавляет into: IO.stream(:stdio, :line) к команде

iex(27)> System.cmd "git", ["-C", "/home/vonhabsi/workpad/Cuis/.git","branch","-a"], into: IO.stream(:stdio, :line)
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
{%IO.Stream{device: :standard_io, line_or_bytes: :line, raw: false}, 0}
iex(28)>

Какая функция мне нужна, чтобы взять "* master\n remotes/origin/HEAD -> origin/master\n remotes/origin/master\n" из кортежа и вывести его как:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

Дополнительный вывод {%IO.Stream{device: :standard_io, line_or_bytes: :line, raw: false}, 0} нежелателен. Короче говоря, как взять кусок необработанного текста с \n новыми строками и вывести его так, как он должен быть напечатан.

Как вы также сохраняете его в файл?


person vfclists    schedule 22.04.2017    source источник
comment
Вы имеете в виду {s, _} = System.cmd(...) и IO.puts(s)?   -  person Dogbert    schedule 22.04.2017


Ответы (1)


Есть несколько способов извлечь элементы из кортежа:

  • сопоставление с образцом, как предлагает @Dogbert
  • элемент/2

Что касается записи в файл, в iex> попробуйте h File. и tab, чтобы получить список функций. Затем h File.write <cr> за помощью.

Одно из возможных решений

line = System.cmd(...) |> elem(0)
File.write("path_to_file", line)

Если вы пишете много строк, вы можете сначала открыть файл. Посмотрите справку по нему с iex>h File.open

person Steve Pallen    schedule 22.04.2017