다음과 같은 출력이 있습니다.
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