Перенаправить только последнюю строку STDOUT в файл - PullRequest
9 голосов
/ 27 января 2011

Я компилирую код Scala и записываю вывод консоли вывода в файл.Я только хочу сохранить последнюю строку STDOUT в файл.Вот команда:

scalac -Xplugin:divbyzero.jar Example.scala >> output.txt

Вывод scalac -Xplugin: divbyzero.jar Example.scala:

helex@mg:~/git-repositories/my_plugin$ scalac -Xplugin:divbyzero.jar Example.scala | tee -a output.txt
You have overwritten the standard meaning
Literal:()
rhs type: Int(1)
Constant Type: Constant(1)
We have a literal constant
List(localhost.Low)
Constant Type: Constant(1)
Literal:1
rhs type: Int(2)
Constant Type: Constant(2)
We have a literal constant
List(localhost.High)
Constant Type: Constant(2)
Literal:2
rhs type: Boolean(true)
Constant Type: Constant(true)
We have a literal constant
List(localhost.High)
Constant Type: Constant(true)
Literal:true
LEVEL: H
LEVEL: H
okay
LEVEL: H
okay
false
symboltable: Map(a -> 219 | Int | object TestIfConditionWithElseAccept2 | normalTermination | L, c -> 221 | Boolean | object TestIfConditionWithElseAccept2 | normalTermination | H, b -> 220 | Int | object TestIfConditionWithElseAccept2 | normalTermination | H)
pc: Set(L, H)

И я хочу сохранить только ПК: Set (L,H) в выходной файл, а не остальные.С помощью какой команды я могу достичь своей цели?

Ответы [ 5 ]

27 голосов
/ 27 января 2011

Просто передайте стандартный вывод через tail -n 1 в ваш файл

6 голосов
/ 28 января 2011
scalac ... | awk 'END{print>>"output.txt"}1'

Это перенаправит все на стандартный вывод и добавит последнюю строку к output.txt.

6 голосов
/ 27 января 2011

Вы можете использовать tail:

scalac -Xplugin:divbyzero.jar Example.scala | tail -1 >> output.txt
4 голосов
/ 28 января 2011

В Bash и других оболочках, поддерживающих процесс замены:

command | tee  >(tail -n 1 > outputfile)

отправит полный вывод в stdout и последнюю строку вывода в файл. Вы можете сделать это так, чтобы добавить последнюю строку в файл вместо того, чтобы перезаписать его:

command | tee  >(tail -n 1 >> outputfile)
1 голос
/ 10 марта 2011

Просто небольшая точность относительно этой хвостовой команды. Если программа выдает стандартную ошибку, вы должны перенаправить ее

Пример:

apachectl -t 2>&1 | tail -n 1

Перенаправления: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...