我正在编译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)
我只想保存pc:在输出文件中设置(L,H)而不是其余部分。借助哪个命令我可以实现我的目标?
答案 0 :(得分:27)
只需通过tail -n 1
将标准输出到您的文件
答案 1 :(得分:6)
您可以使用tail
:
scalac -Xplugin:divbyzero.jar Example.scala | tail -1 >> output.txt
答案 2 :(得分:6)
scalac ... | awk 'END{print>>"output.txt"}1'
这将把所有内容传递给stdout ,将最后一行追加到output.txt。
答案 3 :(得分:4)
在Bash和其他支持进程替换的shell中:
command | tee >(tail -n 1 > outputfile)
将完整输出发送到stdout,输出的最后一行发送到文件。您可以这样做,将最后一行附加到文件而不是覆盖它:
command | tee >(tail -n 1 >> outputfile)
答案 4 :(得分:1)
关于这个尾部命令只是一个小精度。如果程序输出标准错误,则必须重定向
示例:
apachectl -t 2>&1 | tail -n 1