如何在 Linux 上使用正则表达式 (RegEx)
正则表达式是正则表达式的首字母缩写词。正则表达式特殊字符或字符集,帮助我们以搜索数据和匹配复杂模式。正则表达式最常与 Linux 命令一起使用:- grep、sed、tr、vi。
以下是一些基本的正则表达式:Sr. no. Symbol Description 1. . It is called a wild card character, It matches any one character other than the new line. 2. ^ It matches the start of the string. 3. $ It matches the end of the string. 4. * It matches up to zero or more occurrences i.e. any number of times of the character of the string. 5. \ It is used for escape following character. 6. () It is used to match or search for a set of regular expressions. 7. ? It matches exactly one character in the string or stream.
下面是我们将要使用的文本文件的链接:
使用的文本文件: Fruits-name
1. 使用“.” (点)匹配字符串。
使用 ”。”我们可以发现一个字符串,如果我们不知道确切的字符串,或者我们只记得只有字符串,我们可以使用的开始和结束“”作为一个缺失的字符,它会填补那个缺失的字符。让我们看一个例子来更好地理解:'这个文件包含水果的名字,我们将在这个文件上使用正则表达式。
脚本:
#!/bin/sh
# Basic Regular Expression
# 1. Using “.” to match strings.
# loading the text file
fruits_file=`cat fruit.txt | grep App.e`
# here the original (answer) word will be Apple,
# but because we don’t know the spelling of the Apple,
# we will put a dot (.) in that place.
echo “1. Using ‘.’ to find the original word, whereas given word is ‘App.e'”
# displaying output
echo “Output:”
echo “$fruits_file”
输出:
2. 使用“^”(脱字符)匹配字符串的开头
使用“^”,我们可以找到所有以给定字符开头的字符串。让我们看一个例子以便更好地理解。在这里,我们试图找到所有以字母 B 开头的水果名称:
脚本:
#!/bin/sh
# Basic Regular Expression
# 2. Using “^” (caret) to match the beginning of the string
# loading the text file
fruits_file=`cat fruit.txt | grep ^B`
echo “2. Using ‘^’ to find out all the words that start with the letter ‘B'”
# displaying output
echo “Output:”
echo “$fruits_file”
输出:
3.使用“$”(美元符号)匹配字符串的结尾
使用“$”我们可以找到所有以给定字符结尾的字符串。让我们看一个例子以便更好地理解。在这里,我们试图找到所有以字母 e 结尾的水果名称:
脚本:
#!/bin/sh
# Basic Regular Expression
# 3. Using “$” (dollar) to match the ending of the string
# loading the text file
fruits_file=`cat fruit.txt | grep e$`
echo “3. Using ‘$’ to find out all the words that end with the letter ‘e'”
# displaying output
echo “Output:”
echo “$fruits_file”
输出:
4. 使用“*”(星号)查找字符串的任意重复次数
使用“*”,我们可以匹配零个或多个字符串的字符。让我们看一个例子以便更好地理解。在这里,我们试图找到所有水果的名称
在其中一个接一个地出现一个或多个“ap”。
脚本:
#!/bin/sh
# Basic Regular Expression
# 4. Using “*” to find any number of repetition of a string
# loading the text file
fruits_file=`cat fruit.txt | grep ap*le`
echo “4. Using ‘*’ to find out all the fruits name that has one or more occurrence of ‘ap’ one after another in it”
# displaying output
echo “Output:”
echo “$fruits_file”
输出:
5. 使用“\”(反斜杠)匹配特殊符号
使用带有特殊符号的“\”,如空格(“”)、换行符(“\n”),我们可以从文件中找到字符串。让我们看一个例子以便更好地理解。在这里,我们试图找到所有在全名中包含空格的水果名称。
脚本:
#!/bin/sh
# Basic Regular Expression
# 5. Using “\” to match the special symbol
# loading the text file
fruits_file=`cat fruit.txt | grep “\ “`
echo “5. Using ‘\’ to find out all the fruits name that has single space in their full name”
# displaying output
echo “Output:”
echo “$fruits_file”
输出:
6. 使用“()”(大括号)匹配正则表达式组。
使用“()”,我们可以找到与“()”中的模式匹配的字符串。让我们看一个例子以便更好地理解。在这里,我们试图找到全名中有空格的所有水果名称。
脚本:
#!/bin/sh
# Basic Regular Expression
# 6. Using “()” (braces) to match the group of regexp.
# loading the text file
fruits_file=`cat fruit.txt | grep -E “(fruit)”`
echo “6. Using ‘()’ to find out all the fruits name that has word ‘fruit’ in it”
# displaying output
echo “Output:”
echo “$fruits_file”
输出:
7. 使用“?”(问号)查找所有匹配的字符
使用“?”,我们可以匹配前面的 0 或 1 次重复。例如,如果我们做这样的事情:ab?它将匹配“a”或“ab”。让我们看另一个例子以便更好地理解。在这里,我们试图找到所有包含字符“Ch”的水果名称。
脚本:
#!/bin/sh
# Basic Regular Expression
# 7. Using “?”(question mark) to match the
# loading the text file
fruits_file=`cat fruit.txt | grep -E Ch?`
echo “7. Using ‘?’ to find out all the fruits name that has ‘Ch’ in it”
# displaying output
echo “Output:”
echo “$fruits_file”
输出:
注意: “<< //// ////”可用于多行注释。