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