이런 파일이 있어요
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
$3
bash
awk -F: '{printf "%-8s %-21s %s\n",$1,$2,$3}' file.txt
입력 파일을 사용하면 다음과 같은 출력을 얻습니다.
AAA 111111 FIRSTLINE
BBBBBBB 22222222222 SECONDLINE
CCC 33333333333333333333 THIRD LINE