다음과 같은 파일이 있습니다
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
? 탭 대신 공백을 사용합니다.