我正在寻找一种解析多行命令输出的方法;nth以 CSV 格式将行和格式的每个倍数分组。
$ cat file
ABC
123
62p4-123
DEF
456
62p4-456
Run Code Online (Sandbox Code Playgroud)
我需要将 o/p 分组在每一3rd行,并以 3 的倍数分组,即第 3、6 和 9 后分别以逗号分隔格式的第 1、4、7 和 2、5 和 8
ABC,DEF
123,456
62p4-123,62p4-456
Run Code Online (Sandbox Code Playgroud)
这只是一个示例格式,我的实际用例是一个jsono/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
Run Code Online (Sandbox Code Playgroud)
预期 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
Run Code Online (Sandbox Code Playgroud)
这里有一个更简单的方法
$ pr -2ts, file
ABC,DEF
123,456
62p4-123,62p4-456
Run Code Online (Sandbox Code Playgroud)
对于另一个输入,将列数更改为 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
Run Code Online (Sandbox Code Playgroud)
如果您只知道行数,而不知道最终的列数,则可以执行此操作
$ pr -$(awk 'END{print NR/3}' file) -ts, file
Run Code Online (Sandbox Code Playgroud)