Skip to content

Practice Exercise: Advanced String Manipulation in Bash

Objectives

  • Explore advanced string manipulation techniques in Bash scripting.
  • Understand how to extract, modify, and manipulate strings efficiently.
  • Create Bash scripts that leverage string manipulation for various tasks.

Scenario

Bash scripting allows for powerful string manipulation, which is often used to process text data efficiently. In this exercise, you'll dive into advanced string manipulation techniques, enabling you to handle and manipulate text data effectively within your scripts.

Tasks

Task 1: Extracting Substrings

  • Create a Bash script named substring_extraction.sh.
  • Declare a string variable containing a sentence of your choice.
  • Use string manipulation techniques to:
  • Extract the first word from the sentence.
  • Extract the last word from the sentence.
  • Extract a specific word from the sentence by its position (e.g., the third word).
  • Display the extracted substrings.
  • Comment your script to explain the extraction process.
    #!/bin/bash
    
    # Declare a string variable containing a sentence
    sentence="The quick brown fox jumps over the lazy dog."
    
    # Extract the first word from the sentence
    first_word=${sentence%% *}
    
    # Extract the last word from the sentence
    last_word=$(echo $sentence | awk '{print $NF}')
    
    
    # Display the extracted substrings
    echo "Original sentence: $sentence"
    echo "First word: $first_word"
    echo "Last word: $last_word"
    
    # Ask the user for the position of the word to extract
    read -p "Enter the position of the word to extract (e.g., 1 for the first word): " position
    
    # Extract the word based on the user's input
    word=$(echo $sentence | cut -d ' ' -f $position)
    echo "$position word: $word"
    
  • To test and run your script
    [intern@intern-a1t-inf-lnx1 ~]$   chmod +x substring_extraction.sh
    [intern@intern-a1t-inf-lnx1 ~]$ ./substring_extraction.sh
    Original sentence: The quick brown fox jumps over the lazy dog.
    First word: The
    Last word: dog.
    Enter the position of the word to extract (e.g., 1 for the first word): 5
    5 word: jumps
    

Task 2: Replacing Substrings

  • Create a Bash script named substring_replacement.sh.
  • Declare a string variable containing a sentence with a specific word.
  • Use string manipulation techniques to:
  • Replace a specific word in the sentence with another word of your choice.
  • Display the modified sentence.
  • Comment your script to explain the replacement process.
    #!/bin/bash
    
    # Declare a string variable containing a sentence
    sentence="The quick brown fox jumps over the lazy dog."
    
    # Ask the user for the word to replace and the replacement word
    read -p "Enter the word to replace: " word_to_replace
    read -p "Enter the replacement word: " replacement_word
    
    # Replace the specified word in the sentence
    modified_sentence="${sentence/$word_to_replace/$replacement_word}"
    
    # Display the modified sentence
    echo "Original sentence: $sentence"
    echo "Modified sentence: $modified_sentence"
    
  • To run and test the script
    [intern@intern-a1t-inf-lnx1 ~]$   chmod +x substring_replacement.sh
    [intern@intern-a1t-inf-lnx1 ~]$ ./substring_replacement.sh
    Enter the word to replace: fox
    Enter the replacement word: chicken
    Original sentence: The quick brown fox jumps over the lazy dog.
    Modified sentence: The quick brown chicken jumps over the lazy dog.
    

Task 3: Checking String Length

  • Create a Bash script named string_length.sh.
  • Declare a string variable containing a sentence.
  • Use string manipulation techniques to:
  • Calculate and display the length (number of characters) of the sentence.
  • Comment your script to explain how string length is calculated.
    #!/bin/bash
    
    # Declare a string variable containing a sentence
    sentence="This is a sample sentence for string length calculation."
    
    # Calculate and display the length of the sentence
    length=${#sentence}
    
    # Display the result
    echo "The length of the sentence is: $length characters."
    
  • To run and test the script
    [intern@intern-a1t-inf-lnx1 ~]$ chmod +x string_length.sh
    [intern@intern-a1t-inf-lnx1 ~]$ ./string_length.sh
    The length of the sentence is: 56 characters.
    

Task 4: String Concatenation

  • Create a Bash script named string_concatenation.sh.
  • Declare two string variables containing your first name and last name.
  • Use string manipulation techniques to:
  • Concatenate the two strings to form your full name.
  • Display your full name.
  • Comment your script to explain the concatenation process.
    #!/bin/bash
    
    # Declare string variables for first name and last name
    first_name="John"
    last_name="Doe"
    
    # Concatenate the two strings to form the full name
    full_name="$first_name $last_name"
    
    # Display the full name
    echo "Full Name: $full_name"
    
  • To run and test the script
    [intern@intern-a1t-inf-lnx1 ~]$ ./string_concatenation.sh
    Full Name: John Doe
    

Task 5: Advanced String Manipulation

  • Create a Bash script named advanced_string_manipulation.sh.
  • Implement a more complex string manipulation task of your choice, such as:
  • Parsing a CSV file and extracting specific fields.
  • Let's use the employee.csv we created in the previous chapters
    Employee ID,Name,Department
    101,John,HR
    102,Emily,Finance
    103,Michael,IT
    104,Susan,HR
    
  • Manipulating a date string (e.g., changing the format).
  • Processing log entries to extract specific information.
  • Document your script with comments to explain the chosen task and the string manipulation techniques applied.
    #!/bin/bash
    
    # Define the CSV file path
    csv_file="employees.csv"
    
    # Check if the CSV file exists
    if [ -e "$csv_file" ]; then
        echo "Parsing data from $csv_file..."
    
        # Use awk to skip the header line, then extract the Name (column 2) and Department (column 3) fields
        awk -F',' 'NR>1 {print "Name: " $2, "Department: " $3}' "$csv_file"
    
        echo "Data extraction complete."
    else
        echo "CSV file $csv_file not found."
    fi
    
  • To run and test
    [intern@intern-a1t-inf-lnx1 ~]$   chmod +x advanced_string_manipulation.sh
    [intern@intern-a1t-inf-lnx1 ~]$ ./advanced_string_manipulation.sh
    Parsing data from employees.csv...
    Name: John Department: HR
    Name: Emily Department: Finance
    Name: Michael Department: IT
    Name: Susan Department: HR
    Data extraction complete.
    

Conclusion

In this exercise, you've explored advanced string manipulation techniques in Bash scripting. These techniques are valuable for processing and manipulating text data efficiently within your scripts. By completing these tasks, you've gained a deeper understanding of how to work with strings in Bash.