unexpand command in Linux with Examples (original) (raw)

Last Updated : 15 Oct, 2024

To convert the leading spaces and tabs into tabs, there exists a command line utility called **unexpand command. The **unexpand command by default converts each space into tabs writing the produced output to the standard output.

**Syntax

$unexpand [OPTION]... [FILE]...

where,

Using unexpand command

To convert all the space characters into tab characters in the file **kt.txt, use **unexpand as:

$cat -vet kt.txt
have a nice day$
always try harder$
to achieve better$

/* In the below output $ refers to
the new line feed and ^I refers
to the tab */
$unexpand kt.txt
have^Ia^Inice^Iday$
always^Itry^Iharder$
to^Iachieve^Ibetter$

In order to save the produced output by unexpand command in another file let's say **dv.txt use the below syntax:

/* Saving output in file, dv.txt */
$unexpand kt.txt>dv.txt

$cat -vet dv.txt
have^Ia^Inice^Iday$
always^Itry^Iharder$
to^Iachieve^Ibetter$

Key Options for the unexpand command

**1. -a, - -all option

This option is used to convert all blanks, instead of just initial blanks (which is by default).

/* This converts all the blanks
also into tabs */
$unexpand ****-a** kt.txt>dv.txt

**2. --first-only option

This is used to convert only leading sequences of blanks (overrides -a option).

/* This converts only the leading
sequences of blanks */
$unexpand ****--first-only** kt.txt>dv.txt

**3. -t, - -tabs=N option

This set tabs N characters apart instead of the default of 8 (enables -a option).

/* the -t option with numerical value
2 forces to change the spaces
into tabs of only 2 characters */
$unexpand ****-t2** kt.txt>dv.txt

Other available Options

**Option **Description
-t, --tabs=LIST Uses a comma-separated list of tab positions, enabling the -a option to convert all spaces to tabs.
--help Displays a help message with usage information and exits.
--version Displays version information of the unexpand command and exits.

Also see: expand command

Conclusion

The **unexpand command in Linux is a simple yet powerful tool for converting spaces to tabs in text files. With its various options, such as **-a for converting all spaces, **-t for custom tab widths, and --first-only for restricting changes to leading spaces, it offers flexibility in managing text file formatting.