각 줄 시작 부분의 모든 공백을 탭으로 바꿉니다.

각 줄 시작 부분의 모든 공백을 탭으로 바꿉니다.

각 줄 시작 부분의 모든 공백을 탭 문자로 바꾸는 방법은 무엇입니까?

나는 이 목적으로 sed를 사용하는 것을 선호합니다.

답변1

가지고 다닐 수 있는.

TAB=$(printf '\t')
sed "s/^  */$TAB/" < file.in > file.out

일부 쉘(적어도 ksh93, zsh, bashmkshFreeBSD )은 이와 같은 내용을 확장 하는 sh특별한 형식의 따옴표( )도 지원합니다 .$'...'\t

sed $'s/^  */\t/' < file.in > file.out

셸은 따옴표 fish외부의 내용을 확장합니다.

sed 's/^  */'\t/ < file.in > file.out

sedGNU와 같은 일부 구현에서는 sedTAB을 기본적으로 의미로 인식합니다. \t따라서 이들에 대해서는 다음과 같이 작동합니다.

sed 's/^  */\t/' < file.in > file.out

이식 가능하며 awk큰따옴표로 확장됩니다. \t또한 확장 정규 표현식을 사용하므로 x+대신 사용할 수 있습니다 xx*.

awk '{sub(/^ +/, "\t"); print}' < file.in > file.out

답변2

sed -rGNU/Linux를 사용하는 경우 확장 정규식을 활성화 해야 합니다 .

 echo "        lots of spaces    " | sed -r 's:^\s+:\t:'

선행 공백만 단일 공백으로 대체됩니다 tab.

관련 정보