function::substr - Linux


function::substr extracts a substring from a given string. It is a versatile command that finds wide applications in text processing, string manipulation, and data extraction tasks.


function::substr <string> <start> <length>
  • <string>: The input string from which the substring will be extracted.
  • <start>: The starting position (0-based index) of the substring.
  • <length>: The number of characters to extract from the <start> position.


-i, –ignore-case

Ignores the case when matching substrings.

-o, –offset

Indicates that <start> is an offset from the end of the string, rather than the beginning.

-n, –null

Terminates the extracted substring with a null character (\0).


Extract a substring starting at position 5 and of length 10:

substr="function::substr This is a test 5 10"
echo $substr  # prints "is a test"

Extract a substring from the end of the string:

substr="function::substr This is a test 15 -5"
echo $substr  # prints "test"

Extract a substring while ignoring case:

substr="function::substr This is a test 15 -5 -i"
echo $substr  # prints "teSt"

Common Issues

  • Negative start position: Positions cannot be negative. Use the -o flag for offsets from the end of the string.
  • Start position beyond string length: If <start> is greater than the string length, an empty string will be returned.
  • Length greater than string length: The extracted substring will only include characters up to the end of the string.


substr can be combined with other commands for advanced text processing tasks. For instance:

grep -q "pattern" | function::substr 1 -1  # Extract the first match of "pattern"

Related Commands

  • cut – Extracts fields from lines of text based on character positions.
  • sed – Stream editor for transforming text using patterns and substitutions.
  • awk – Pattern scanning and processing language for text manipulation.