我有以下输出:
Column1
1.2.3.1
1.2.3.2
1.2.3.3
1.2.3.4
1.2.3.5
1.2.3.6
Column2
1.2.3.7
1.2.3.8
1.2.3.9
I would like to split into 2 columns once it reaches Column2.
For example:
Column1 Column2
1.2.3.1 1.2.3.7
1.2.3.2 1.2.3.8
1.2.3.3 1.2.3.9
1.2.3.4
1.2.3.5
1.2.3.6
我尝试过“pr -2 -t”,但它不知道如何根据匹配标准进行分割。
请问有什么建议吗?
答案1
使用csplit
和paste
两个临时文件:
csplit -z file '/^Column/' '{*}' # write output to xx00, xx01
paste xx*
rm xx00 xx01 # cleanup
答案2
您可以使用正则表达式工具将块重新排列成行
$ cat output | sed -e :a -e '$!N;/\nColumn/{P;D;}' -e 's/\n/ /;ta'
Column1 1.2.3.1 1.2.3.2 1.2.3.3 1.2.3.4 1.2.3.5 1.2.3.6
Column2 1.2.3.7 1.2.3.8 1.2.3.9
然后执行简单的转置,rs
例如使用 BSD 命令
$ cat output | sed -e :a -e '$!N;/\nColumn/{P;D;}' -e 's/\n/ /;ta' | rs -T
Column1 Column2
1.2.3.1 1.2.3.7
1.2.3.2 1.2.3.8
1.2.3.3 1.2.3.9
1.2.3.4
1.2.3.5
1.2.3.6