expand와 unexpand
100%

Text-Fu · 레슨 10

expand와 unexpand

expand와 unexpand에서 탭 정지 위치가 탭과 공백 사이의 변환을 제어하는 방식을 배웁니다.

탭은 고정된 수의 눈에 보이는 공백이 아니라 다음 탭 정지 위치까지의 이동을 저장합니다. 표시 너비는 현재 열과 탭 정지 설정에 따라 달라집니다. expandunexpand 명령어는 이러한 위치를 고려하며 탭 문자와 공백을 서로 변환합니다.

탭을 공백으로 변환하기

expand는 입력을 읽고 탭을 알맞은 탭 정지 위치에 도달하는 데 필요한 공백으로 바꾼 뒤 결과를 표준 출력에 씁니다.

$ expand sample.txt

기본적으로 탭 정지 위치는 8열마다 있습니다. 따라서 1열의 탭과 6열의 탭은 서로 다른 수의 공백으로 확장되며 항상 공백 여덟 개로 바뀌지는 않습니다.

기본 설정에서 expand는 탭 문자를 어떻게 바꾸나요?

탭 정지 위치 선택하기

지정한 열 간격마다 탭 정지 위치를 두려면 -t NUMBER를 사용합니다. 4열 간격은 다음과 같습니다.

$ expand -t 4 sample.txt

GNU expand는 명시적인 탭 위치를 쉼표로 구분한 목록도 받습니다. 각 줄의 첫 번째 비공백 문자 앞에 있는 탭만 변환하려면 -i를 사용합니다.

4열마다 탭 정지 위치를 사용해 탭을 변환하는 명령어는 무엇인가요?

변환된 출력 안전하게 저장하기

expand는 입력 파일을 직접 편집하지 않습니다. 변환한 텍스트를 저장하려면 표준 출력을 다른 경로로 리디렉션합니다.

$ expand sample.txt > result.txt

expand sample.txt > sample.txt를 사용하지 마세요. 쉘은 expand가 읽기 전에 대상 파일을 비우므로 원본 데이터를 잃을 수 있습니다. 별도로 쓴 결과를 확인한 뒤 적절한 파일 관리 단계로 원본을 의도적으로 교체할 수 있습니다.

sample.txt를 읽기 전에 비우지 않고 확장한 텍스트를 저장하는 명령어는 무엇인가요?

공백을 탭으로 변환하기

unexpand는 선택한 탭 정지 위치에서 정렬을 유지하면서 변환 가능한 공백을 탭으로 바꿉니다. 기본적으로 GNU unexpand는 각 줄의 첫 번째 비공백 문자 앞에 있는 초기 공백만 변환합니다.

$ unexpand result.txt

각 줄 전체에서 적합한 공백을 고려하려면 -a를 사용합니다.

$ unexpand -a result.txt

단순히 공백 여덟 개의 모든 연속 구간을 바꾸는 것은 아닙니다. expand와 마찬가지로 변환은 열 위치와 탭 정지 위치에 따라 달라집니다. 파일이 다른 규칙을 따르면 -t 4 또는 다른 탭 정지 지정을 사용하세요.

-a가 없을 때 GNU unexpand는 일반적으로 어떤 공백의 변환을 고려하나요?

GNU unexpand가 첫 번째 비공백 문자 뒤의 공백도 고려하도록 하는 옵션은 무엇인가요?

두 명령어 모두 파일을 지정하지 않으면 표준 입력을 읽으므로 파이프라인에서 사용할 수 있습니다. 표시 정렬이 같더라도 공백으로 변환했다가 다시 탭으로 바꾸면 원래 탭과 공백의 선택이 복원되지 않을 수 있습니다.

레슨 완료

expand와 unexpand 완료

이제 탭 정지 정렬을 유지하면서 탭과 공백을 변환할 수 있습니다.

  • 탭을 다음 설정된 정지 위치까지의 공백으로 확장할 수 있습니다.

  • -t로 사용자 지정 탭 정지 위치를 설정할 수 있습니다.

  • 입력을 교체하기 전에 출력을 다른 파일에 안전하게 저장할 수 있습니다.

  • 기본 unexpand 동작으로 선행 공백을 변환할 수 있습니다.

  • 각 줄 전체의 공백을 고려해야 할 때 -a를 사용할 수 있습니다.

학습 진행 상황 저장

무료 계정을 만들어 이 레슨을 저장하고 어떤 기기에서든 계속 학습하세요.

무료 계정 만들기
다음 수업
Text-Fu(으)로 돌아가기