ao-mud is a spellbook of well-commented atomic bash scripts that each do one thing. we are building semantic building blocks for an autonomously-evolving digital spellcasting language.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
2.3 KiB

#!/bin/sh
# To make this script executable, use the command: chmod +x 08_regex.sh
# To run the script, use the command: ./08_regex.sh
echo "This spell will teach you the basics of regular expressions and pattern matching in POSIX-compliant Bash"
echo "To study the code of the examples, please use the command: cat 08_regex.sh"
# Basic regular expressions (special characters)
echo "Regular expressions are a way to search for patterns in text. Common special characters include:"
echo "^ - beginning of a line"
echo "$ - end of a line"
echo "* - any number of characters"
echo "? - any single character"
echo "[] - any character in the brackets"
echo "() - group characters together"
echo "| - or"
echo "\\ - escape special characters"
# grep (search in text)
echo "The grep command searches for a pattern in a file or input."
echo "grep '^root:' /etc/passwd - searches for the pattern '^root:' in the file /etc/passwd"
echo "Example: grep 'bash' /etc/passwd - searches for the pattern 'bash' in the file /etc/passwd"
grep 'bash' /etc/passwd
# sed (replace in text)
echo "The sed command is a stream editor that can perform basic text transformations on an input stream (a file or input from a pipeline)."
echo "sed 's/root/admin/' /etc/passwd - replaces the first occurence of 'root' with 'admin' in the file /etc/passwd"
echo "Example: sed 's/bash/zsh/' /etc/passwd - replaces the first occurence of 'bash' with 'zsh' in the file /etc/passwd"
echo "backup" | sed 's/backup/backup_file/'
# awk (advanced text processing)
echo "The awk command is a text processing tool that can perform more complex text transformations."
echo "awk -F: '{ print $1 }' /etc/passwd - prints the first field of each line of the file /etc/passwd, where the field separator is ':'"
awk '{ print $1 }' /etc/passwd
echo "root:x:0:0:root:/root:/bin/bash" | awk -F: '{print $1}'
# find and xargs (run command for all found files)
echo "The find command is used to search for files in a directory hierarchy. xargs is used to build and execute command lines from standard input."
echo "find / -name '*.txt' | xargs grep 'example' - searches for all .txt files in the root directory and its subdirectories, and runs 'grep 'example'' on each file found"
find /etc -name "*.conf" -exec grep "root" {} \;
echo "Spell cast successfully"