서식이 지정된 테이블 헤더에 색상을 지정하고 있습니다.column -ts $'\t'
색상 코드 없이는 잘 작동하지만 첫 번째 행에 색상 코드를 추가하면 column
출력이 제대로 정렬되지 않습니다.
컬러 출력 없이 작동합니다.예상대로:
printf "1\t2\t3\nasdasdasdasdasdasdasd\tqwe\tqweqwe\n" | column -ts $'\t'
하지만 첫 번째 행에 색상을 추가할 때정렬되지 않음컬러 텍스트 줄:
printf "\e[7m1\t2\t3\e[0m\nasdasdasdasdasdasdasd\tqwe\tqweqwe\n" | column -ts $'\t'
이 동작은 Ubuntu Linux와 Mac OS X 모두에서 관찰되었습니다.
답변1
네, 색상 코드에도 형식이 지정되어 있기 때문입니다 column
. 그들은 다른 사람들과 똑같은 캐릭터입니다. 이제 이미 사용하고 있으므로 printf
이를 사용하여 형식을 지정할 수도 있습니다.
$ printf '\e[7m%-24s%-8s%-6s\e[0m\n%-24s%-8s%-6s\n' "1" "2" "3" "asdasdasdasdasdasdasd" "qwe" "qweqwe"
1 2 3
asdasdasdasdasdasdasd qwe qweqwe
또는 색상 코드를 추가할 수 있습니다.뒤쪽에사용 column
:
$ printf "1\t2\t3\nasdasdasdasdasdasdasd\tqwe\tqweqwe\n" | column -ts $'\t' |
sed "1{s/^/$(printf '\e[7m')/;s/$/$(printf '\e[0m')/}"
1 2 3 # this line is colored
asdasdasdasdasdasdasd qwe qweqwe
답변2
나는 이것이 출력에서 공간을 차지하지 않는 v100 이스케이프 시퀀스라는 column
것을 모르는 것 같습니다 . \e[7m
8진수 문자코드 0~037은 공백을 차지하지 않는 것으로 가정한 것으로 보인다. 초기 이스케이프 시퀀스를 자체 줄에 넣은 다음 출력에서 해당 개행 문자를 제거하여 원하는 것을 얻을 수 있습니다.
printf '\e[7m\n1\t2\t3\e[0m\nasdasdasdasdasdasdasd\tqwe\tqweqwe\n' |
column -ts $'\t' |
sed '1{N;s/\n//}'
답변3
다음 버전 v2.40부터유틸리티Linux/기둥다음에 포함된 텍스트를 처리합니다.Fe 이스케이프 시퀀스~에서ANSI 이스케이프 코드적절하게.
그리고이 변화, ANSI 시퀀스로 텍스트를 출력하는 프로그램은 다음 예와 같이 올바르게 처리됩니다.
$ tput cols
108
$ echo BEFORE; ls -1 --sort=time --color=always | head -n 19 | column
BEFORE
column-test.sh test_enosys test_pathnames
column-pr.md test_mkfds test_sha1
tests test_uuid_namespace lib
ansiescape-test.txt test_tiocsti test_md5
column test_sigreceive test_byteswap
text-utils test_sysinfo
column-old.c test_strerror
$ echo REFERENCE; ls -1 --sort=time --color=never | head -n 19 | column
REFERENCE
column-test.sh text-utils test_tiocsti test_sha1
column-pr.md column-old.c test_sigreceive lib
tests test_enosys test_sysinfo test_md5
ansiescape-test.txt test_mkfds test_strerror test_byteswap
column test_uuid_namespace test_pathnames
$ echo AFTER; ls -1 --sort=time --color=always | head -n 19 | column
AFTER
column-test.sh text-utils test_tiocsti test_sha1
column-pr.md column-old.c test_sigreceive lib
tests test_enosys test_sysinfo test_md5
ansiescape-test.txt test_mkfds test_strerror test_byteswap
column test_uuid_namespace test_pathnames