基本正则表达式
正则表达式字符 含义
^word 查找以word开头的文本
word$ 查找以word结尾的文本
. 代表一个任意字符
\ 转义符
- 0到多个字符
[abc] 代表一个字符,这个字符是a或b或c
[a-z];[0-9] 代表a到z中的一个字符;0到9中的一个数字
[^abc] 代表一个非a、b、c的字符
{m,n} m到n个字符
字符匹配:
. :匹配任意单个字符
[] :匹配指定范围内的任意单个字符;
[^]:匹配制定范围外任意单个字符 [:digit:] lower upper alpha alnum space
匹配次数:用在要指定其出现的次数的字符后面,用于限制其前面字符出现的次数
*:匹配其在前面的字符任意次:0,1.多次
.*:匹配任意长度的任意字符
\?:匹配其前面字符0次或一次,及前面字符是可有可无
\+:匹配其前面字符一次或是多次,至少一次,
\{m\}匹配前面字符m次
\{m.n\}匹配其前面的字符至少m次,之多n次
\{0,n\}:之多n次
\{m,\} :至少m次
位置锚定:^:行首锚定:用于模式的最左侧
$:行尾锚定:用于模式的最右侧
^PATTERN:用于PATTERN
^$:空白行
1:空行或包含空白字符的行
单词:非特殊字符组成的连续字符(字符串)都成为单词
\<或是\b:词首锚定,用于单词模式的左侧
>或是\b:词尾锚定,用于单词模式的右侧
<PATTERN\>:匹配完整单词
文本处理命令
grep用法:
grep一般有两种用法,一种是从文件查找,一种是从管道的输入查找
-n 输出结果加行号
–color=auto 匹配的关键字高亮显示
-A3 输出匹配行的后三行
-B2 输出匹配行的前两行
-v 反向查找,即输出不包含关键字的行
-i 关键字匹配时忽略关键字大小写
egrep: 扩展表达式
sed: 管道命令 可以处理管道输入
- 1.行删除
nl /etc/passwd | sed ‘2d’ //删除第2行
- 行新增
sed ‘2a drink tea’ //在第二行下面追加一行"drink tea",a代表append
- 行选取
sed -n ‘5,7p’ //选取第5到7行输出,必须加-n参数,不然效果就是所有行都被输出,而5到7行输出两次。
4.行替换
sed ‘2,5c No 2~5 lines’ //将第2到5行替换为一行字符串"No 2~5 lines"
- 字符串替换
sed ‘s/要被替换的字符串/新的字符串/g’ //固定的格式,开头是s结尾是g,中间三个/分隔开要被替换的字符串和新的字符串,注意这里要被替换的字符串可以是正则表达式。
printf 文件格式化输出
awk : 将文件通过分隔符拆成列来处理,还能通过条件判断对不同的行进行不同的处理,甚至还可以进行数值计算
- 将每行按分隔符拆分成列并选取某些列
- 通过逻辑判断对不同行进行不同的处理
- 对一行中的几列数值进行计算
[:space:] ↩︎