gpt4 book ai didi

linux - 避免 col 的 32KB 长度限制

转载 作者:太空狗 更新时间:2023-10-29 12:16:53 25 4
gpt4 key购买 nike

我使用 python 从路由器和交换机屏幕抓取大量文本,并使用 script 记录 session .通常我会清理 script session :

touch a_clean_script_file.txt; col -bx <a_script_file.tmp > a_clean_script_file.txt

由于我不想深入的原因,我发现了一个问题; col每行最大限制为 32KB1:

[mpenning@hostname tmp]$ ### 128KB characters, using normal shell pipes
[mpenning@hostname tmp]$ printf 'z%.0s' {1..131072} | wc -c
131072
[mpenning@hostname tmp]$ ### 128KB characters, using col (limited to 32KB) <----
[mpenning@hostname tmp]$ printf 'z%.0s' {1..131072} | col -bx | wc -c
32769
[mpenning@hostname tmp]$

显然我可以使用 split -b 来解决这个问题,但现在我正在创建许多小文件并对每个文件执行 col。从长远来看,我尝试通过 mbuffer 进行缓冲(mbuffer -s 8192) 和 stdbuf ,但这些显然无济于事。

问题

是否有:

  • col 的替代方案没有每行 32KB 的限制?
  • 一种拆分长文本行的方法,无需通过 split 写入许多临时文件?2

1 在我的系统上至少是 32KB,uname -aLinux 主机名 2.6.32-431.1.2.0.1.el6。 x86_64 #1 SMP Fri Dec 13 13:06:13 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

2 我意识到我可以split进入 /dev/shm 以消除一些磁盘延迟,但我想避免 split如果可能,全部。

最佳答案

这是 col 中的错误。 (我已经向 FreeBSDDebian(这也适用于 Ubuntu)报告了它的值(value);请随时将报告广播给可能拥有自己的源存储库的其他发行版。)。

据我所知,该错误存在于 col 实用程序的所有常用版本中,甚至是 OpenBSD 版本。

错误报告中有一个简单的修复,即将c_column 的声明从short 更改为int。我通过下载 debian util-linux source package 测试了这个1,然后使用以下命令编译它(在 ubuntu 系统上),从我下载 tarball 的目录开始:

tar xf util-linux_2.20.1.orig.tar.gz
cd util-linux_2.20.1
CPPFLAGS=-I/usr/include/ncursesw ./configure
cd text-utils
# edit line 81 of text-utils/col.c, s/short/int/
make col


1 就其值(value)而言,我后来才发现这不是 debian col 实用程序的源代码;我看到的主要区别是这个使用 -V 选项报告其版本字符串

关于linux - 避免 col 的 32KB 长度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21459762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com