一.正则表达式和扩展正则表达式
1.首先有各种工具来对文本进行的查看,分析,统计
cat 命令:查看文本的工具
cat主要有三大功能:
1.一次显示整个文件。$ cat filename
2.从键盘创建一个文件。$ cat > filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件: $cat file1 file2 > file
参数:
-n 由 1 开始对所有输出的行数编号
-b 和 -n 相似,只不过对于空白行不编号
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2
2.cut 抽取文件
cut -d(指明分隔符,默认是:)
如显示文件的情况:例cut -d: –f1 /etc/passwd 抽取第一行的
3.其次有 head tail 行前 行后的提取 文本的整理wl 数据的排序sort距离可以说明
3.1、找出ifconfig “网卡名” 命令结果中本机的IPv4地址
centos7
ifconfig ens33|head -n2|tail -n1 |tr -s ‘ ‘|cut -d” ” -f3
centos6
ifconfig eth0|head -n2 |tail -n1|tr -s ” ” : |cut -d: -f4
ifconfig eth0|head -n2 |tail -n1|cut -d: -f2|cut -d” ” -f1
ifconfig eth0|head -2 |tail -1|cut -d: -f2|cut -d”B” -f1
3.2查出分区空间使用率的最大百分比值
df |tr -s ” ” %|cut -d% -f5|sort -nr|head -n1
df -i |tr -s ” ” %|cut -d% -f5|sort -nr|head -n1
3.3、查出用户UID最大值的用户名、UID及shell类型
sort -t: -k3 -n /etc/passwd|tail -n1|cut -d: -f1,3,7
4 Linux 文本处理三剑客 grep awk sed 本次介绍的重点就是grep
grep 文本搜索工具,根据用户的要求对文本进行处理。
模式:有正则表达式来进行过滤处理
grep root /etc/passwd
grep “$USER” /etc/passwd
grep ‘$USER’ /etc/passwd
grep
`whoami` /etc/passwd
grep的命令有很多:
-v: 显示不被pattern匹配到的行
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串
-q: 静默模式,不输出任何信息
-A #: after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:实现多个选项间的逻辑or关系
grep
–e ‘cat ’
-e ‘dog’ file
–
w:匹配整个单词
–
E:使用ERE
–
F:相当于fgrep,不支持正则表达式
5 正则表达式和扩展正则表达式
其中:正则表达式
元字符分类:字符匹配、匹配次数、位置锚定、分组
5.1 字符匹配
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[:digit:] 十进制数字 [:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
5.2 匹配次数
* 匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
.
* 任意长度的任意字符
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
5.3 位置锚定
位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定;用于单词模式的右侧
\ 匹配整个单词
例如:
1 显示/proc/meminfo文件中以大小s开头的行(要求:使用两
种方法)
grep “^\(s\|S\)” /proc/meminfo
grep ^[sS] /proc/meminfo
2、显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v “/bin/bash$” /etc/passwd
3、显示用户rpc默认的shell程序
grep “^rpc\>” /etc/passwd |cut -d: -f1,7
4、找出/etc/passwd中的两位或三位数
grep -o “\<[0-9]\{2,3\}\>” /etc/passwd
扩展正则表达式是对正则表达式的一个改进,升级
如:
5 统计last命令中以root登录的每个主机IP地址登录次数
last | grep “root” | egrep -o “([0-9]|[0-9]{2}|[0-9]{3})(\.([0-9]|[0-9]{2}|[0-9]{3})
){3}”|sort|uniq -c
6、利用扩展正则表达式分别表示0-9、10-99、100-199、
200-249、250-255
[0-9]
[1-9][0-9]
1[0-9]{2}
2[0-4][0-9]
25[0-5]
7、显示ifconfig命令结果中所有IPv4地址
ifconfig |egrep -o “\<(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>”
二vim 编辑器 shell 脚本编程
打开文本编辑器(可以使用 vi/vim 命令来创建文件)
新建一个3文件hello。sh 是扩展名 表明你用的shell(其中的sh是shell)
首先开头 #!是向解释器传达信息
然后echo 向窗体输送文本
一个简单的脚本:
第一 :创建文件 vim hello.sh
第二:按 i 建进入内容编辑模式
第三:#!/bin/bash
echo———–
echo———–
保存退出 :wq
给权限:chmod +x hello.sh
最后调试脚本 bash hello.sh 或者
./hello.sh
原创文章,作者:gd1479,如若转载,请注明出处:http://www.178linux.com/77433