Unix에서 열 사이에 여러 공백을 추가하는 방법

Unix에서 열 사이에 여러 공백을 추가하는 방법

다음과 같은 파일이 있습니다

0 1 2 3 4 1 0 0
1 2 3 5 0 1 0 0

열 사이에 더 많은 (여러) 공백을 추가하고 다음과 같은 것을 얻고 싶습니다.

0      1      2      3      4
1      2      3      5      0   

컬럼 -t를 사용하여 뭔가를 시도했지만 여전히 내가 원하는 공간을 제공하지 않습니다.

답변1

coreutils를 사용하면 다음을 사용하여 공백을 탭으로 변환 tr한 다음 다음을 사용하여 탭을 다시 여러 공백으로 변환할 수 있습니다 expand.

$ tr ' ' '\t' < file | expand
0       1       2       3       4       1       0       0
1       2       3       5       0       1       0       0

기본 탭 정지는 공백 8개이지만 조정할 수 있습니다.

$ tr ' ' '\t' < file | expand -t 10
0         1         2         3         4         1         0         0
1         2         3         5         0         1         0         0

답변2

예제 데이터에 대한 몇 가지 추가 아이디어:

$ a="0 1 2 3 4 1 0 0"

$ echo "$a"
0 1 2 3 4 1 0 0

$ echo "${a// /                 }"
0                 1                 2                 3                 4                 1                 0                 0

$ echo "$a" |sed 's/ /             /g'
0             1             2             3             4             1             0             0

$ echo "${a// /$'\t'}"
0   1   2   3   4   1   0   0

$ echo "$a" |sed 's/ /\t\t/g'
0       1       2       3       4       1       0       0

답변3

열 형식을 균일하게 지정하려면 awk를 사용할 수 있습니다.

awk '{ for(i=1;i <= NF; i++) { printf "%-7s", $i } print "" }' < input > output

답변4

노력하다 col -x? 탭 대신 공백을 사용합니다.

관련 정보