正在寻找一种解析多行命令输出的方法;将 nth
行的每个倍数分组并以 CSV 格式格式化。
$ cat file
ABC
123
62p4-123
DEF
456
62p4-456
我需要在每 3rd
行和 3 的倍数处对 o/p 进行分组,即第 3、6 和 9 后跟第 1、4 和 7 以及第 2、5 和 8 分别用逗号分隔格式
ABC,DEF
123,456
62p4-123,62p4-456
这只是一个示例格式,我的实际用例是一个 json
o/p,我想在 bash
中使用工具/实用程序对其进行格式化,但我没有在用于解析数据的 jq
中需要一个格式化选项。
我在 awk
中找到了几种方法,比如 awk 'NR % 3 == 0'
但我不能对其他行重复此操作。
编辑:- 正在更新我从 jq
返回的实际 JSON o/p 以获得最有效的解决方案
4496
http://xxx/yyy
/home/build/branches/mmm/file1
4497
http://xxx/yyy/zzz
/home/build/branches/mmm/file1
4498
http://xxx/yyy/zzz
/home/build/branches/mmm/otherfile.c
预期的 o/p
4496,4497,4498
http://xxx/yyy,http://xxx/yyy/zzz,http://xxx/yyy/zzz
/home/build/branches/mmm/file1,/home/build/branches/mmm/file1,home/build/branches/mmm/otherfile.c
最佳答案
这里有一个更简单的方法
$ pr -2ts, file
ABC,DEF
123,456
62p4-123,62p4-456
对于另一个输入,将列数更改为 3。
$ pr -3ts, file
4496,4497,4498
http://xxx/yyy,http://xxx/yyy/zzz,http://xxx/yyy/zzz
/home/build/branches/mmm/file1,/home/build/branches/mmm/file1,/home/build/branches/mmm/otherfile.c
如果你只知道行数,不知道最终的列数你可以这样做
$ pr -$(awk 'END{print NR/3}' file) -ts, file
关于bash - 以 CSV 格式对每第 n 行命令输出进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39572696/