이것은 내가 가진 또 다른 문제입니다 vim
(이것이 내 상표가 되어가고 있는 것 같습니다.). 기본적으로 다음 형식의 줄로 구성된 매우 긴 파일이 있습니다.
;07 :ANZ textv S9_1 9_1_K3_2 S9_3 S9_4 9_1_K3_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T1_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10 9_V3n E3
;08 :ANZ textv S9_1 9_1_K3_2 S9_3 S9_4 9_1_K3_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T2_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10 9_V3n E3
09 :ANZ textv S9_1 9_1_K3_2 S9_3 S9_4 9_1_K3_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T3_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10 9_V3n E3
;10 :ANZ textv S9_1 9_1_K4_2 S9_3 S9_4 9_1_K4_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T1_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10 9_V4n E3
;11 :ANZ textv S9_1 9_1_K4_2 S9_3 S9_4 9_1_K4_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T2_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10 9_V4n E3
12 :ANZ textv S9_1 9_1_K4_2 S9_3 S9_4 9_1_K4_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T3_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10 9_V4n E3
13 :ANZ text S9_1 9_2_K1_2 S9_3 S9_4 9_2_K1_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T1_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10
;14 :ANZ text S9_1 9_2_K1_2 S9_3 S9_4 9_2_K1_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T2_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10
;15 :ANZ text S9_1 9_2_K1_2 S9_3 S9_4 9_2_K1_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T3_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10
보시다시피, 이러한 행의 열은 잘못 정렬되어 있습니다. 즉, 행이 행 에 13
비해 잘못 정렬되어 있습니다 . 그러나 정렬이 더 어려운 경우가 있습니다. 예를 들어 다음과 같은 줄이 있습니다.14
15
;
;14 :ANZ text S9_1 9_2_K1_2 S9_3 S9_4 9_2_K1_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T2_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10
;15 :ANZ text S9_1 9_2_K1_2 S9_3 S9_4 9_2_K1_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T3_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10
아니면 무엇이든 상상할 수 있습니다. 내가 원하는 것은 각 열 사이에 4개의 공백이 있도록 모든 열을 정렬하는 것입니다. 예를 들어 ;07-09
다음과 같은 줄을 만들고 싶습니다 .
;07 :ANZ textv S9_1 9_1_K3_2 S9_3 S9_4 9_1_K3_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T1_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10 9_V3n E3
;08 :ANZ textv S9_1 9_1_K3_2 S9_3 S9_4 9_1_K3_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T2_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10 9_V3n E3
09 :ANZ textv S9_1 9_1_K3_2 S9_3 S9_4 9_1_K3_5 S9_T1_1 S9_T1_2 S9_T1_3 S9_T3_4 S9_T1_5 S9_T1_6 S9_T1_7 S9_T1_8 S9_T1_9 S9_T1_10 9_V3n E3
vim
이를 효율적으로 수행할 수 있는 방법이 있습니까 ?
답변1
command
모드 에서 다음을 실행합니다.
:%!column -t
그러나 이것은 첫 번째 열을 정렬하지 않습니다. 당신은 사용해야합니다조정고급 옵션을 위한 플러그인.
또는 다음을 사용하지 않고 vim
포맷 할 수도 있습니다 perl
.
perl -anle 'BEGIN{$"="\t"} $F[0] = sprintf("%3s", $F[0]);print "@{[@F]}"' file
$"
원하는 구분 기호로 설정하세요 .