명령 줄의 열이있는 행을 바꾸는 사용자 지정 솔루션을 롤링하는 것 외에는 내가 할 수있는 유일한 도구는 ironically이라는 도구 transpose
입니다.
설치
불행히도 리포지토리에 없으므로 다운로드하여 컴파일해야합니다. 의존하는 추가 라이브러리가 없기 때문에 이것은 매우 간단합니다. 다음과 같이 달성 할 수 있습니다.
$ gcc transpose.c -o transpose
용법
간단한 텍스트 파일을 쉽게 처리 할 수 있습니다. 예를 들면 다음과 같습니다.
$ cat simple.txt
X column1 column2 column3
row1 0 1 2
row2 3 4 5
row3 6 7 8
row4 9 10 11
이 명령을 사용하여 바꿀 수 있습니다 :
$ transpose -t --fsep " " simple.txt
X row1 row2 row3 row4
column1 0 3 6 9
column2 1 4 7 10
column3 2 5 8 11
이 명령은 transpose
조옮김 ( -t
)이며 사용할 필드 구분 기호는 공백 ( --fsep " "
)입니다.
당신의 예
샘플 데이터는 약간 더 복잡한 형식이므로 2 단계로 처리해야합니다. 먼저이를 transpose
처리 할 수 있는 형식으로 변환해야합니다 .
이 명령을 실행하면 데이터를보다 가로 형식으로 배치 할 수 있습니다.
$ sed 's/:/ /; /^$/d' sample.txt \
| sort | paste - - - - -
title1 A1 title1 B1 title1 C1 title1 D1 title2 A2
title2 B2 title2 C2 title2 D2 title3 A3 title3 B3
title3 C3 title3 D3 title4 A4 title4 B4 title4 C4
title4 D4 title5 A5 title5 B5 title5 C5 title5 D5
이제 title1, title2 등의 보조 항목 만 제거하면됩니다.
$ sed 's/:/ /; /^$/d' sample.txt \
| sort | paste - - - - - | sed 's/\ttitle[0-9] / /g'
title1 A1 B1 C1 D1 A2
title2 B2 C2 D2 A3 B3
title3 C3 D3 A4 B4 C4
title4 D4 A5 B5 C5 D5
이제는 transpose
처리 할 수 있는 형식으로되어 있습니다. 다음 명령은 전체 조옮김을 수행합니다.
$ sed 's/:/ /; /^$/d' sample.txt \
| sort | paste - - - - - | sed 's/\ttitle[0-9] / /g' \
| transpose -t --fsep " "
title1 title2 title3 title4
A1 B2 C3 D4
B1 C2 D3 A5
C1 D2 A4 B5
D1 A3 B4 C5
A2 B3 C4 D5