前言
echo guangge{01...100...2} 第二个是间隔多少个计数
命令别名 alias, unalias , 作用是封装命令
:
alias rm = 'rm -i'
命令历史 history
!行号
!! 上一次的命令
ctrl + a 移动到行首
ctrl + e 移动到行尾
Grep
格式:
bash
grep [options] pattern [files]
常用参数:
参数选项 | 解释说明 |
---|---|
-v | --invert-match:显示不能被模式匹配到的行 |
-n | 显示匹配行与行号 |
-i | ignorecase,忽略字符的大小写 |
-c | 只统计匹配的行数 |
-E | 使用egrep命令,支持使用扩展的正则表达式元字符 |
--color=auto | 为grep过滤结果添加颜色 |
-w | 只匹配过滤的单词 |
-o | 仅显示匹配到的字符串本身 |
-q | --quiet 或 --silent:静默模式,即不输出任何信息 |
-r | 递归查找子目录中的文件 |
基础正则表达式BRE集合
基本正则表达式BRE集合
符号 | 作用 |
---|---|
^ | 尖角号,用于模式的最左侧,如"^oldboy",匹配以oldboy单词开头的行 |
$ | 美元符,用于模式的最右侧,如"oldboy$",表示以oldboy单词结尾的行 |
^$ | 组合符,表示空行 |
. | 匹配任意一个且只有一个字符,不能匹配空行 |
\ | 转义字符,让特殊含义的字符,现出原形,还原本意,例如\.代表小数点 |
* | 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容 |
.* | 组合符,匹配所有内容 |
^.* | 组合符,匹配任意多个字符开头的内容 |
.*$ | 组合符,匹配以任意多个字符结尾的内容 |
[abc] | 匹配集合内的任意一个字符,a或b或c,可以写[a-c] |
[^abc] | 匹配除了^后面的任意字符,a或b或c,^表示对[abc]的取反 |
扩展正则表达式实践
+
+号表示匹配前一个字符1次或多次,必须使用grep -E扩展正则
此处使用grep-E进行实践扩展正则:
grep -E 'l+' test.txt
?符
匹配前一个字符0次或1次1
bash
找出文件中包含gd或god的行
grep -E 'go?d' test.txt
god
#字母o出现了一次
gd
#字母o出现了0次
|符
竖线|在正则中是或者的意思
bash
找出系统中的txt文件,且名字里包含a或b的字符
find / -maxdepth 3 -name "*.txt" | grep -i -E "a | b"
()小括号
将一个或多个字符捆绑在一起,当作一个整体进行处理;
-
小括号功能之一是分组过滤被括起来的内容,括号内的内容表示一个整体
-
括号()内的内容可以被后面的"\n"正则引用,n为数字,表示引用第几个括号的内容
-
\1
∶表示从左侧起,第一个括号中的模式所匹配到的字符 -
\2
:从左侧期,第二个括号中的模式所匹配到的字符
-
bash
grep -E 'g(oo | la)d' test.txt
# good
# glad
#匹配两次括号内容
grep -E "(l..e).*\1" lovers.txt
# I love my lover.
# He love his lovers.
{n,m}匹配次数
重复前一个字符各种次数,可以通过-o参数显示明确的匹配过程
意思为匹配 y 最少2次,最多4次。
也可以忽略n 或 m , 默认边界值: y{n,} y{,m}
grep -E "y{2,4}" test.txt
# yyyyyyyyyu
# yyyyu
#加了 -o 显示匹配的内容
grep -E "y{2,4}" test.txt -o
# yyyy
# yyyy
# yyyy