在介绍三剑客以前,先来认识一下通配符和正则表达式linux
通配符
git
正则表达式正则表达式
做用:经过一些特殊字符,来表示一类字符内容shell
一、字符匹配bash
. 任意一个字符工具
[ ] 范围内的任意一个字符spa
[^ ] 取反3d
字符类 [:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]code
二、次数匹配blog
* 匹配前面的字符0次到屡次
? 匹配前面的字符0次到1次
+ 匹配前面的字符1次到屡次
三、位置锚定
^ 锚定行首
$ 锚定行尾
\b 锚定词首和锚定词尾
\> 锚定词尾
\< 锚定词首
<\root\> 匹配root单词
\{m\} 匹配前面的字符m次
\{m,n\} 匹配前面的字符m到n次
四、分组
\(\)
分组特性:默认清空下,linux系统下回为分组指定变量,变量表示形式\1 \2 \3
day4--文本处理三剑客awk,sed,grep
三剑客用法很是灵活强大,须要在练习中慢慢体会,遂以练习为主。
awk做为三剑客的老大,擅长于取列,主要用来作文本输出格式化
awk在处理文件时是逐行处理的
在awk中,所有行称为$0,第一个字段称为$1,第二个字段称为$2……
NR为行号,NF表示最后一行
BEGIN表示最开始执行,END表示最末尾执行,由于这种特性,BEGIN经常用来赋值
awk [选项] [处理命令(脚本)] [文件]
awk -F 指定输入文件折分隔符 awk -v 赋值一个用户定义变量 awk -f 从脚本文件中读取awk命令
例一、输出/etc/passwd第一行的第一个域
例二、打印出/etc/passwd的第3个域和第5个域
例三、匹配/var/log/message中,带有erro关键字的相关信息
例四、输出/etc/passwd中文件名,行数,列数,和整行信息
awk -F ':' '{print FILENAME, NR , NF ,$0}' /etc/passwd
例五、使用冒号分隔符,查询最后一列
例六、使用awk输出第一块网卡的ip地址
sed做为三剑客的老二,擅长取行,替换和数据搜寻
sed [选项] [脚本] [文件]
sed -e 以选项中指定的脚原本处理输入结果 sed -f 以选项中指定的脚本文件来处理输入结果 sed -n 只显示处理后结果
sed -i 替换
例一、查看/etc/passwd5-10行
这个p表明print打印,同理,d表明delete删除
例二、搜寻/etc/passwd中有root关键字的行
例三、新建一个文件,并删除2到4行
grep [option]... PATTERN [FILE]
PATTERN通常使用两种方法,正则表达式和通配符
egrep = grep -E 使用扩展的正则表达式进行匹配
fgrep = fast grep 只使用文件通配符进行匹配
grep 默认使用正则表达式进行文本匹配
grep -P使用perl语言的正则表达式引擎进行搜索 grep -f指定文件 grep -i 忽略大小写 grep -v反选 grep --color=auto 语法着色 grep -c统计 grep -o输出时仅显示匹配内容(默认输出的是匹配到的行) grep -n显示行号 grep -w只匹配与整个单词匹配的行
例一、显示/proc/meminfo文件中大小s开头的行
例二、显示/etc/passwd文件中不以/bin/bash结尾的行
例三、显示/etc/passwd文件中UID最大的用户的用户名
例四、若是用户root存在,显示其默认的shell程序
例五、找出/etc/passwd中的两位或三位数