'pr -e'는 무슨 뜻인가요?

'pr -e'는 무슨 뜻인가요?

coreutils 매뉴얼에서 pr:

‘-e[in-tabchar[in-tabwidth]]’
‘--expand-tabs[=in-tabchar[in-tabwidth]]’

입력 시 탭을 공백으로 확장합니다. 선택적 매개변수 in-tabchar는 입력 탭 문자입니다(기본값은 TAB 문자). 두 번째 선택적 매개변수 in-tabwidth는 입력 탭 문자의 너비입니다(기본값은 8).

-e[in-tabchar[in-tabwidth]]각각을 여러 개의 공백으로 바꾸는 것을 의미합니까?in-tabcharin-tabwidth

아래 두 예에서 , 및 가 하나 의 공백으로 구분되어 있는 반면, 첫 번째 예에서는 sum이 세 개의 공백으로 구분되고 , 두 번째 예에서는 sum이 두 개의 공백으로 구분되는 이유는 무엇 a입니까 ? 감사해요.bc13

$ printf "a:b:c\n1::3\n" | pr -t -e:2
a b c
1   3

$ printf "a:b:c\n1::3\n" | pr -t -e:1
a b c
1  3

답변1

pr -e명령과 동일한 작업을 수행합니다 expand. 일반적으로 터미널 에뮬레이터와 유사한 방식으로 탭을 확장합니다. TAB은 커서를 다음 탭 정지로 이동시키는 것으로 터미널이 인식하는 제어 문자로, 테이블 서식 지정 및 정렬에 사용됩니다.

대부분의 터미널에서는 기본적으로 탭 정지가 8열마다 발생합니다. 따라서 TAB을 보내는 것은 현재 커서 위치에 따라 1에서 8 사이에 여러 공백을 보내는 것과 동일한 효과를 갖습니다.

 $ printf '%b\n' 'a\tb' 'abcde\tg'
 a       b
 abcde   g

첫 번째 탭은 커서를 오른쪽으로 7칸 이동하고, 두 번째 탭은 오른쪽으로 3칸 이동합니다.

pr -e\t동일한 효과를 얻기 위해 필요한 만큼의 공백으로 대체합니다 .

$ printf 'abcde\tg\n' | sed l
abcde\tg$
abcde   g
$ printf 'abcde\tg\n' | pr -te | sed l
abcde   g$
abcde   g

GNU에는 prGNU와 동일한 제한 사항이 있습니다. expand즉, 모든 문자가 1바이트로 구성되고 표시를 위해 1열을 차지한다고 가정합니다.

관련 정보