본문 바로가기
놀기/Linux

Tab을 Space로 변경하기 (expand command 사용하기)

by Hi~ 2021. 7. 5.

프로그램을 작성하다 보면 여러 편집기 및 개발자를 거치면서 Tab과 Space가 섞이게 된다.

편집기의 설정을 맞춰 사용한다지만 섞이기 마련이라 골치 아프다.

 

편집기에서 지원하는 기능을 이용해 재조정하는 방법도 있는데 귀찮다.

 

Linux에는 expand command가 있는데, 이 command를 사용하면 Tab을 Space로 변경할 수 있다.

 

$ expand --help
사용법: expand [<옵션>]... [<파일>]...
Convert tabs in each FILE to spaces, writing to standard output.

<파일>이 주어지지 않거나 - 이면 표준 입력을 읽습니다.

Mandatory arguments to long options are mandatory for short options too.
  -i, --initial    do not convert tabs after non blanks
  -t, --tabs=N     have tabs N characters apart, not 8
  -t, --tabs=LIST  use comma separated list of tab positions
                     The last specified position can be prefixed with '/'
                     to specify a tab size to use after the last
                     explicitly specified tab stop.  Also a prefix of '+'
                     can be used to align remaining tab stops relative to
                     the last specified tab stop instead of the first column
      --help     이 도움말을 표시하고 끝냅니다
      --version  버전 정보를 출력하고 끝냅니다

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report expand translation bugs to <https://translationproject.org/team/>
Full documentation at: <https://www.gnu.org/software/coreutils/expand>
or available locally via: info '(coreutils) expand invocation'

 

방법은 아래와 같다.

$ expand -t 4 log.c | sponge log.c

 

sponge는 표준 입력(stand input)을 파일로 저장하는 command로 아래와 같이 설치하면 된다.

$ sudo apt install moreutils
$ sponge -h
sponge [-a] <file>: soak up all input from stdin and write it to <file>

 

한 번에 변환하려면 스크립트를 작성해도 되지만 실수하지 않도록 조심하자!!

댓글