How to converts tabs to spaces in the Linux system?

While working with files, sometimes we encounter situations where a file contains many tabs and the requirement is to have spaces instead. For simple files, this conversion is easy, but for large files with numerous tabs, manual conversion becomes very difficult. This is where the expand command becomes essential.

The expand command in Linux is used to convert tabs to spaces. If no file is specified, the expand command reads from standard input and processes the text accordingly.

Syntax

The general syntax of the expand command is as follows −

expand [OPTION]... [FILE]...

Command Options

The following table describes the available options for the expand command −

Option Description
-i, --initial Don't convert tabs after non-blank characters
-t, --tabs=N Set tabs to be N characters apart (default is 8)
-t, --tabs=LIST Use comma-separated list of explicit tab positions
--help Display help message and exit
--version Display version information and exit

Basic Usage Examples

Converting Tabs in a File

First, let's create a file containing tabs using the cat command −

$ cat > text.txt
Hey,	welcome	to	tutorialspoint...
^C

To convert tabs to spaces with a specific tab width, use the -t option −

$ expand --tabs=4 text.txt
Hey,    welcome    to    tutorialspoint...

Converting Tabs from Standard Input

To convert tabs to spaces from standard input, use the expand command without a filename −

$ expand --tabs=2
Hey,	welcome	to	tutorialspoint...
Hey,  welcome  to  tutorialspoint...

Using the Initial Option

To prevent conversion of tabs that appear after non-blank characters, use the -i option −

$ expand -i text.txt

This option is useful when you want to preserve tabs that are not at the beginning of lines or after whitespace.

Advanced Usage

Custom Tab Positions

You can specify exact tab positions using a comma-separated list −

$ expand --tabs=1,5,9,13 text.txt

Default Behavior

When used without options, expand converts tabs to 8-character spacing −

$ expand text.txt

Getting Help and Version Information

To view detailed help information about the expand command −

$ expand --help

To check the version of the expand command −

$ expand --version

Conclusion

The expand command is a powerful utility for converting tabs to spaces in Linux systems. It offers flexible options for different spacing requirements and can process both files and standard input. Understanding its various options helps in efficiently handling text formatting tasks in shell scripts and file processing workflows.

Updated on: 2026-03-17T09:01:38+05:30

4K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements