각 줄 시작 부분의 모든 공백을 탭 문자로 바꾸는 방법은 무엇입니까?
나는 이 목적으로 sed를 사용하는 것을 선호합니다.
답변1
가지고 다닐 수 있는.
TAB=$(printf '\t')
sed "s/^ */$TAB/" < file.in > file.out
일부 쉘(적어도 ksh93
, zsh
, bash
및 mksh
FreeBSD )은 이와 같은 내용을 확장 하는 sh
특별한 형식의 따옴표( )도 지원합니다 .$'...'
\t
sed $'s/^ */\t/' < file.in > file.out
셸은 따옴표 fish
외부의 내용을 확장합니다.
sed 's/^ */'\t/ < file.in > file.out
sed
GNU와 같은 일부 구현에서는 sed
TAB을 기본적으로 의미로 인식합니다. \t
따라서 이들에 대해서는 다음과 같이 작동합니다.
sed 's/^ */\t/' < file.in > file.out
이식 가능하며 awk
큰따옴표로 확장됩니다. \t
또한 확장 정규 표현식을 사용하므로 x+
대신 사용할 수 있습니다 xx*
.
awk '{sub(/^ +/, "\t"); print}' < file.in > file.out
답변2
sed -r
GNU/Linux를 사용하는 경우 확장 정규식을 활성화 해야 합니다 .
echo " lots of spaces " | sed -r 's:^\s+:\t:'
선행 공백만 단일 공백으로 대체됩니다 tab.