通配符是匹配文件名,不能精确匹配大小写,而正则表达式可以精确匹配大小写
基本正则表达式
如何表示次数:
* :匹配前面的字符任意次,包括0次,尽可能长的匹配
.* :匹配前面的字符任意次,但是不包括0次
\? :匹配前面的字符出现0次或者1次,有且只有一次
\+ :匹配前面出现的字符至少要有一次
\{n\} :匹配前面出现的字符等于几次
\{m,n\} :匹配前面出现的字符,最少m次,最多n次
\{,n\} :匹配前面的字符,最多n次,没有也算
\{n.\} :匹配前面的字符,最少n次,只要连续出现n次,后面的都算
过滤ens33中的ip地址,网络号
位置锚定:
^ : 行首锚定
$ : 行尾锚定
^root$ :匹配行,这一行只能有root
^$ :开头为空,空白行
^[[:space:]]*$ :空白行
_<或者\b :词首锚定 用于匹配单词模式的左侧
从左往右全部都能匹配到
_>或者\b :词尾锚定 用于匹配单词模式的右侧
从右往左只能匹配右侧的单词
\broot\b :匹配整个单词
分组以及逻辑或
分组:()
逻辑或:\|
grep -E 使用扩展正则表达式 (就是把\全部去掉)
| :表示逻辑或
sed编辑器:
grep:过滤文件内容
sed:行编辑器,是按行处理的
sed是一种流编辑器,每一次处理的内容,只有确认才会生效,如果不确认,那么就只是把模式空间的临时数据展示给用户,然后删除,按文本的行一行一行处理,一直处理到最后一行。默认情况下,sed都是在模式空间执行,因此原文件不会发生变化。要变化怎么办的?
sed的操作格式
sed -e “操作” 文件1 文件2
sed -e “操作1;操作2” 文件
-e :指定的命令来处理输入的文本文件,只有一个操作,-e可以省略,多个指令不可省略
-f :用特定的脚本文件来处理输入的文件
-i :立即生效
-n :仅显示script处理后的结果
sed -i :立即生效(慎用)
sed的操作符:
p:打印
-n就是禁止默认输出
sed -n “2p” 文件名 指定输出第二行的内容
sed -n “=” 文件名 只显示行号
sed -n “=;p” 文件名 显示行号和内容
sed -n “$p” 文件名 打印最后一行
sed -n “1,3p” 文件名 打印1到3行
sed -n “1p;3p” 文件名 打印第一和第三行
sed -n ‘p;n’ 文件名 打印奇数行
sed -n ‘n;p’ 文件名 打印偶数行
文本模式过滤内容
sed -n ‘/过滤内容/p’ 文件名
sed使用扩展正则表达式
sed -r
使用sed删除文件:
现在有一个文件,文件名保留,内容删除,免交互
sed -i ‘d’ test.txt
cat /dev/null > test.txt