正则匹配
常用元字符
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字符或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
常用的限定符
代码 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
grep命令的使用
命令 | 说明 |
---|---|
grep | 文本搜索 |
grep命令选项的使用
命令形式
- grep [选项] 正则 [文件名]
命令 | 说明 |
---|---|
-i | 忽略大小写 |
-n | 显示匹配行号 |
-v | 显示不包含匹配文本的所有行 |
-c | 统计匹配的行数 |
-o | 仅显示匹配到的字符串 |
-E | 使用ERE,相当于egrep |
实战:
- 查找文件内容包含root的行数
- grep -n root test.txt
sed命令的使用
sed是流编辑器,一次处理一行内容
命令形式
- sed[选项][-e< script>][-f<script文件>][文本文件]
- h 显示帮助
- n 仅显示script处理后的结果
- -e< script>以选项中指定的script来处理输入的文本文件
- -f<script文件>以选项中指定的script文件来处理输入的文本文件
- -i 对文件实际进行操作
常用动作
- a:新增 sed -e ‘4 a b’(在a后加入b)
- c:取代 sed -e ‘2,5c a b c’(用a、b、c取代2-5行的内容)
- d:删除 sed -e ‘2,5d’(删除2-5行)
- i:插入 sed -e ‘2i b’(在第二行前插入b)
- p:打印 sed -n ‘/root/p’(匹配到root打印)
- s:取代 sed -e ‘s/被取代/要取代/g(全局)’
查看帮助
- man sed
- sed -h
awk命令的使用
命令形式:
- awk ‘-正则 + 执行命令’[文件名]
常用参数
命令 | 说明 |
---|---|
FILENAME | awk浏览的文件名 |
BEGIN | 处理文本之前要执行的操作 |
END | 处理文本之后要执行的操作 |
FS | 设置输入域分隔符,等价于命令行 -F选项 |
NF | 浏览记录的域的个数(列数) |
NR | 已读的记录数(行数) |
OFS | 输出域分隔符 |
ORS | 输出记录分隔符 |
RS | 控制记录分隔符 |
$0 | 整条记录 |
$1 | 表示当前行的第一个域… |
实战:
打印passwd第二行第7列
awk -F : 'NR==2{print $7}' /etc/passwd
打印
开头打印BEGIN BEGIN后打印passwd第1第2列
awk -F : 'BEGIN{print "BEGIN,BEGIN"}{print $1 $2}' /etc/passwd
分割打印123|456|789
echo "123|456|789" | awk "BEGIN{RS="|"}{print $0}"