unix - awk 输出到指定数量的列

标签 unix

编辑:我可以从命令中获取所有所需的值:

awk '/Value/{print $4}' *.log > ofile.csv 

这将生成一个包含数百个值的单列的 .csv 文件。我想将这些值分成指定数量的列,即,我可以指定我想要 100 列,然后我的 .csv 文件的第一列为 1-10,而不是在单列中包含 1-1000 的值,第 2 列为 11-20...第 100 列为 991-1000。

以前,我使用 pr 命令来执行此操作,但当我想要的列数太高(根据我的经验> 36)时,它不起作用。

awk '/Value/{print $4}' *.log | pr -112s',' > ofile.csv

pr 命令给出以下消息: pr:页面宽度太窄

我可以使用此命令的替代方法,该方法不会限制一行数据中逗号分隔符的数量吗?

最佳答案

如果您的值始终具有相同的长度,则可以使用column:

$ seq 100 200 | column --columns 400 | column --table --output-separator "," 
100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145,148,151,154,157,160,163,166,169,172,175,178,181,184,187,190,193,196,199
101,104,107,110,113,116,119,122,125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200
102,105,108,111,114,117,120,123,126,129,132,135,138,141,144,147,150,153,156,159,162,165,168,171,174,177,180,183,186,189,192,195,198,

--columns 控制列数,但在我的示例中,400 是字符数,而不是列数。

如果您的值的字符长度不同,您会发现在值的宽度不同的地方插入了空格。

关于unix - awk 输出到指定数量的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62364097/

相关文章:

unix - 在 UNIX 机器上查找 CPU 信息的命令

objective-c - 如何散列目录的(可能是递归的)内容

c - 实现匿名管道

svn - 仅使用 subversion 提交修改后的文件

mysql - Web 应用程序可以在我的 Windows 开发盒上运行,但不能在运行 Debian 的服务器上运行

linux - 如何在 bash 的目录中显示具有最多硬链接(hard link)的文件

c - 尝试用信号量编写一个简单的程序

unix - 自定义 init.d 脚本给出守护进程 : not found

unix - 如何以编程方式确定哪个是 Solaris/illumos 上的引导磁盘?

c - 具有全局变量更改的 sigsetjmp?