首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash管道中处理连续的单行数据和流处理?

在bash管道中处理连续的单行数据和流处理?
EN

Unix & Linux用户
提问于 2023-02-15 11:13:24
回答 2查看 262关注 0票数 5

我正在调试一个嵌入式服务器,它将连续的一行文本输出到指定的网络端口。流中没有换行符,但是它是文本数据,我想在输出时格式化它。我尝试使用tr (转换)将流中的一个字符替换为一个能工作的换行符,但是不可能找到唯一的单个字符,它总是可以被换行符明智地替换。我最初的想法是使用sed向2-3个字符的模式中添加一个换行符,但是由于sed是基于行的,而且流是一个永不结束的单行,sed永远不会完成这个过程!是否有基于非线的sed替代方案?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2023-02-15 16:28:05

解算成

代码语言:javascript
复制
stdbuf -o0 ncat -ul 51002 | stdbuf -o0 fold | sed "s/\[15/\&\[15/g" -u | stdbuf -o0 tr -d '\n' | tr "&" "\n"

15是我想加一个换行符的模式。有点变通,但效果很好。

票数 2
EN

Unix & Linux用户

发布于 2023-02-15 12:12:54

这就是fold的目的:

代码语言:javascript
复制
NAME
       fold - wrap each input line to fit in specified width

SYNOPSIS
       fold [OPTION]... [FILE]...

DESCRIPTION
       Wrap input lines in each FILE, writing to standard output.

       With no FILE, or when FILE is -, read standard input.

       Mandatory  arguments  to  long options are mandatory for short options
       too.

       -b, --bytes
              count bytes rather than columns

       -s, --spaces
              break at spaces

       -w, --width=WIDTH
              use WIDTH columns instead of 80

       --help display this help and exit

       --version
              output version information and exit

正如您在上面看到的,它可以根据宽度折叠这一行,这样您就可以得到100个字符的行,其中包括:

代码语言:javascript
复制
command_that_reads_from_port | fold -w 100

这是一个标准程序,是的一部分,因此它应该存在于任何GNU系统中。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/735607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档