Перенаправить только последнюю строку STDOUT в файл

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

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

выход scalac-Xplugin: divbyzero.пример банку.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)

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

5 ответов


просто труба stdout через tail -n 1 в файле


можно использовать tail:

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

scalac ... | awk 'END{print>>"output.txt"}1'

Это будет передавать все через stdout и добавить последнюю строку в выходной.формат txt.


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

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

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

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

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

пример:

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

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