How to split a string on a delimiter in Bash

How to split a string on a delimiter in Bash

If you’re working with strings in a Bash shell script, you may find yourself needing to split them on a delimiter. This can be a common requirement for parsing data, especially when working with text files or output from other programs. Fortunately, Bash provides several built-in methods for splitting strings on a delimiter. In this tutorial, you will explore some of these methods and provide step-by-step instructions for splitting a string on a delimiter in a Bash shell script.

How to split a string on a delimiter in Bash shell script

By using the following methods, you can split string on a delimiter in bash shell script:

  • Using the cut command
  • Using the Internal Field Separator (IFS) variable
  • Using the awk command
  • Using the IFS and for loop

Using the cut command

The cut command is a versatile utility that can extract columns or fields from a text file or standard input. To split a string on a delimiter using cut, you can use the following syntax:

$ echo "apple,banana,orange" | cut -d',' -f2

In this example, the echo command is used to send the string “apple,banana,orange” to standard output. The cut command takes this output as input and splits it on the delimiter ‘,’ (specified using the -d option). The -f option is used to specify the field or column to extract (in this case, the second field).

Using the Internal Field Separator (IFS) variable

Bash uses the Internal Field Separator (IFS) variable to determine the delimiter used to split a string into fields. By default, IFS is set to whitespace (space, tab, and newline). You can change the value of IFS to split a string on a specific delimiter. For example:

$ str="apple,banana,orange"
$ IFS=',' read -ra arr <<< "$str"

In this example, the read command is used to read the input string into an array arr, splitting it on the ‘,’ delimiter (specified using the IFS variable). The -a option is used to read the input into an array. The <<< operator is used to pass the string as input to the read command.

Using the awk command

The awk command is a powerful text processing tool that can perform various operations on text files or standard input. To split a string on a delimiter using awk, you can use the following syntax:

$ echo "apple,banana,orange" | awk -F',' '{print $2}'

In this example, the echo command is used to send the string “apple,banana,orange” to standard output. The awk command takes this output as input and splits it on the ‘,’ delimiter (specified using the -F option). The {print $2} statement is used to print the second field.

Using the IFS and for loop

You can also use the IFS variable and a for loop to split a string into fields. For example:

$ str="apple,banana,orange"
$ IFS=',' read -ra arr <<< "$str"
$ for i in "${arr[@]}"; do echo "$i"; done

In this example, the read command is used to read the input string into an array arr, splitting it on the ‘,’ delimiter (specified using the IFS variable). The for loop is then used to iterate over the array and print each element.

Conclusion

Splitting a string on a delimiter is a common task in Bash shell scripting. In this tutorial, you learned various ways of splitting a string on a delimiter, including using the cut command, the IFS variable, awk, and the for loop. These methods provide a range of options for splitting a string based on your requirements, making it a versatile tool for Bash shell scripting.

Recommended Tutorials

AuthorAdmin

My name is Devendra Dode. I am a full-stack developer, entrepreneur, and owner of Tutsmake.com. I like writing tutorials and tips that can help other developers. I share tutorials of PHP, Python, Javascript, JQuery, Laravel, Livewire, Codeigniter, Node JS, Express JS, Vue JS, Angular JS, React Js, MySQL, MongoDB, REST APIs, Windows, Xampp, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL and Bootstrap from a starting stage. As well as demo example.

Leave a Reply

Your email address will not be published. Required fields are marked *