awk输出到指定的列数

时间:2020-06-13 18:34:23

标签: unix

编辑:我可以从命令中获得所有想要的值:

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

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

以前,我是使用pr命令执行此操作的,但是当我想要的列数过多时(根据我的经验,> 36),该命令将无效。

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

pr命令给出以下消息: pr: page width too narrow

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

1 个答案:

答案 0 :(得分:2)

如果您的值始终是相同的长度,则可以使用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是字符数,而不是列数。

如果您输入的值的字符长度不同,则会在其中插入宽度不同的空格。