热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

有什么办法可以区分一个脚本的多个多行输出吗?

如何解决《有什么办法可以区分一个脚本的多个多行输出吗?》经验,为你挑选了1个好方法。

我正在运行一个脚本input.sh,它具有多个多行输出,如下所示:

echo -e 'first \n second'
echo -e 'first \n second'
echo -e 'first \n second'

我对该文件没有控制权,我所能知道的是它将具有多个多行输出。

我需要能够在该文件输出消息时实时对该文件的每个单独输出进行操作。缓冲是一个问题,但不是我要问的问题。

我做了一些简化,但是问题归结为:我想在每个输出的末尾插入一个袋鼠。请在下面查看我的尝试:

./input.sh | sed 's/$/kangaroo/'

上面的版本在每个换行符之后插入一个袋鼠,而不是在每个多行符输出之后插入一个袋鼠。

./input.sh | perl -0777 -pe 's/$/kangaroo/'

此perl版本仅在所有输出完成后才插入一只袋鼠(总共一个袋鼠,而不是每个输出一个袋鼠。)

我尝试了其他变体,但它总是一个或另一个-每行之后都有一个袋鼠,或者所有东西之后都有一个袋鼠。我尝试使用tr换页符替换新行,但这并没有任何区别。

如何才能做到这一点?

顺便说一句,我已经仔细阅读了这个问题及其答案,但是他们正在讨论对文件的操作。我无法将此处描述的原理应用于管道并从stdin中读取。



1> ikegami..:

没有办法区分

echo -e 'first\nsecond'
echo -e 'first\nsecond'
echo -e 'first\nsecond'

echo -e 'first\nsecond\nfirst'
echo -e 'second\nfirst\nsecond'

两者都输出以下字节流(以十六进制表示):

66 69 72 73 74 0A 73 65 63 6F 6E 64 0A 66 69 72 73 74 0A 73 65 63 6F 6E 64 0A 66 69 72 73 74 0A 73 65 63 6F 6E 64 0A

流不包含有关这些字节的含义或如何组装的任何信息。充其量,可能会有时间上的差异。


推荐阅读
author-avatar
园园哚
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有