让Tee更好地处理运输

j

我编写了一个Java控制台应用程序,该应用程序使用结尾的回车符(\ r)而不是换行符(\ n)反复将其状态打印到控制台,以将输出保持在一个屏幕上。我也想将输出输出到文件中,例如

java -jar my-jar.jar | tee /tmp/my-jar.log

但是,将所有内容都写入该文件没有任何意义,只是在应用程序末尾可见。换句话说,我并不需要所有以\ r结尾的“行”。

例子:我编码

System.out.print("hello\r")
Thread.sleep(2000);
System.out.println("world")

屏幕上会出现“ hello”,两秒钟后将其替换为“ world”。因此,程序结束后,用户只能在屏幕上看到“世界”。很好,是正确的。

但是,如果我将其存放到文件中,则该文件包含“ hello \ rworld \ n”,但我只希望它包含“ world \ n”。

我该如何在命令行上而不是在Java中进行编码(这就是为什么问题在这里而不是在SO上)的原因?

约翰1024

使用sed

默认情况下,sed读取换行符分隔的输入。此命令将删除\r行中最后一个字符之前的所有内容

sed 's/.*\r//'

例如:

$ echo $'line1\n\hi\rhello\rworld' | sed 's/.*\r//'
line1
world

要将其与结合使用tee,我们可以使用流程替换

echo $'line1\n\hi\rhello\rworld' | tee >(sed 's/.*\r//' >Outfile)

在bash下,该构造>(...)称为流程替换它在括号中运行命令,并将其放入类似文件的对象中。tee写入文件状对象,然后命令处理输入。

使用awk

同样,这会删除\r以换行符分隔的行中的最后一个之前的所有内容

awk -F'\r' '{print $NF}'

该选项-F'\r'将字段分隔符设置为回车符。因此,我们只想$NF在每个换行符分隔的行上打印最后一个字段因此,print $NF

例如:

$ echo $'line1\n\hi\rhello\rworld' | awk -F'\r' '{print $NF}'
line1
world

配合使用tee

echo $'line1\n\hi\rhello\rworld' | tee >(awk -F'\r' '{print $NF}' >Outfile)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

哪个更好地处理对象?

来自分类Dev

如何重构逻辑以更好地处理错误?

来自分类Dev

如何更好地处理事件

来自分类Dev

如何更好地处理@RequestParam(required = true)

来自分类Dev

如何更好地处理GPS位置和Android

来自分类Dev

更好地处理连接到Internet的方法中发生的异常

来自分类Dev

更好地处理连接到Internet的方法中发生的异常

来自分类Dev

如何更好地处理where子句中的函数

来自分类Dev

原因反应如何更好地处理事件?

来自分类Dev

GWT / AppEngine:设计RequestFactory工作流程以更好地处理异常

来自分类Dev

如何扩展Racket的阅读器以更好地处理路径?

来自分类Dev

如何在Laravel App中更好地处理大.scss文件

来自分类Dev

GWT / AppEngine:设计RequestFactory工作流程以更好地处理异常

来自分类Dev

如何扩展Racket的阅读器以更好地处理路径?

来自分类Dev

萤幕锁定时,可更好地处理网路应用程式Javascript通知

来自分类Dev

有没有办法更好地处理网格上的 8 个相邻值检查?

来自分类Dev

Css 性能:更好地处理带有标签名称或类的子元素?

来自分类Dev

比`tee |更好的方法 切| ... | 贴上

来自分类Dev

AutoMapper优雅地处理NULL

来自分类Dev

Java适当地处理异常

来自分类Dev

巧妙地处理Scala中的Option [T]

来自分类Dev

Rails可以优雅地处理超时的会话?

来自分类Dev

如何可靠地处理队列?

来自分类Dev

cURL超时,可以优雅地处理吗?

来自分类Dev

优雅地处理非数值元素

来自分类Dev

简单地处理长代码行

来自分类Dev

.on('click')不能很好地处理动态内容?

来自分类Dev

如何优雅地处理Kafka中断?

来自分类Dev

如何刷新ErrorDataReceived以更快地处理?

Related 相关文章

热门标签

归档