tr 명령의 잘못된 열 형식

tr 명령의 잘못된 열 형식

이런 파일이 있어요

AAA:111111:FIRSTLINE
BBBBBBB:22222222222:SECONDLINE
CCC:33333333333333333333:THIRD LINE

각 ":"을 탭 문자로 변경하고 싶습니다. 이를 위해 tr 명령을 사용했습니다.

tr ":" "\t"

하지만 난 이걸 얻었어

ABC     12345   FIRSTLINE
DEFGH   1112232 SECONDLINE
IJK     77623786487261  THIRD LINE

세 번째 열의 단어가 모두 같은 위치에서 시작했으면 좋겠는데, 이전 열의 단어가 너무 길면 다음 열의 단어가 내가 원하는 것보다 훨씬 더 앞으로 이동하는 것 같습니다. 이 문제에 대한 빠른 해결책이 있습니까?

감사해요.

답변1

이 시도:

$ cat ex
AAA:111111:FIRSTLINE
BBBBBBB:22222222222:SECONDLINE
CCC:33333333333333333333:THIRD LINE

$ column --table --separator ':' ex
AAA      111111                FIRSTLINE
BBBBBBB  22222222222           SECONDLINE
CCC      33333333333333333333  THIRD LINE

column명령은 지정된 구분 기호를 사용하여 테이블을 생성합니다.

답변2

tr제가 해결할 수 있을지 는 모르겠지만 , awk저는 이런 문제를 해결하는 데 꽤 능숙합니다.

printf의 명령 은 의 명령 awk과 매우 유사하게 작동합니다 C. 형식 문자열의 빼기 기호를 사용 %-8s하면 출력이 왼쪽 정렬됩니다.

이 스위치는 -F:필드 구분 기호를 로 설정합니다 :. 그러면 awk가 variabels 로 설정되고 해당 구분 기호로 구분된 텍스트가 됩니다 $1. 해석을 시도 하지 않으려면 명령줄에서 작은따옴표를 사용하십시오 .$2$3bash

awk -F: '{printf "%-8s %-21s %s\n",$1,$2,$3}' file.txt

입력 파일을 사용하면 다음과 같은 출력을 얻습니다.

AAA      111111                FIRSTLINE
BBBBBBB  22222222222           SECONDLINE
CCC      33333333333333333333  THIRD LINE

관련 정보