column
을 사용하여 stdout 스트림으로 얻는 텍스트 콘텐츠의 서식을 지정하고 싶지만 실패합니다. 예를 들어, 하나의 회선을 사용하여 모든 잘 작동합니다 : I는 "무한"스트림 시뮬레이션하려고하면Linux : 열로 스트림 (파이프) 출력을 포맷 하시겠습니까? (미정의 파일 크기)
$ echo "1 12 123 1234 1 12 123 1234 " | column -t
1 12 123 1234 1 12 123 1234
.. 그러나 :
$ while true; do echo "1 12 123 1234 1 12 123 1234 "; sleep 1; done | column -t
^C
을 ... 단순히 응답이없는, Ctrl-C로 끝날 때까지.
기본적으로 column
표준 입력을 수용한다하더라도,
이 그렇게 믿고 날 리드합니다 (while
것은 단지 'cat /dev/ttyUSB0
'에서와 같이 장치에서 끝없는 스트림을 읽는 시뮬레이션 의미합니다) 작업을 위해 "완전한"완성 된 파일 (즉, 결정된 파일 크기)이 필요합니다. "끝이없는"스트림의 경우에는 그렇지 않습니다. 따라서 아무 것도 출력하지 않습니다.
이 컨텍스트에서 열 서식을 얻는 방법에 대한 제안 사항은 무엇입니까? 편집 : 반드시 column
프로그램이 될 필요는 없습니다; 컬럼에 텍스트가 잘 될 것 포맷 아무것도 ... 사전에
감사합니다,
건배 (예를 awk
를 들어,하지만 난 두려워도 전체 파일이 필요합니다)!
대부분의 경우 열은 각 열을 만드는 방법을 폭 결정하기 위해 모든 입력을 읽을 수있다. 따라서 "끝이없는"스트림으로 사용할 수 없으면 결국 모든 메모리를 소비하게됩니다. – Keith
@Keith를 확인해 주셔서 고마워요. - 그런 경우라고 추측합니다. 'column'은 여기에 적용되지 않습니다. 그러나 "파일 당"대신 "줄 단위"로 작동하는 대체 도구가 있습니까? 내 생각에,이 경우 컬럼 수와 컬럼 너비를 선험적으로 지정해야하지만, 내 사용에는 괜찮습니다. 건배! – sdaau
대신 sed로 파이프를 옮기고 공백을 탭으로 바꾸고 터미널 탭 스톱으로 공백을 컬럼으로 포맷 할 수 있습니다. '... | sed -e 's/[] \ +/\ t/g'' – Keith