Linux复习4——shell与文本处理
认识vim编辑器
#基本语法格式:
vim 文件名
•如果文件存在,进入编辑状态对其进行编辑
•如果文件不存在,创建文件并进入编辑状态
例:
[root@localhosttest]# vim practice.txt
#Vim 编辑器三种模式:
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
输入模式:正常的文本录入。
末行模式:保存或退出文档,以及对文件内容进行替换。
#命令模式常用命令:
#末行模式常用命令:
通配符
定义:一类具有特殊含义的键盘字符,称之为元字符
常用:*, ?, [],{}
功能: 用于模糊搜索文件,也就是匹配文件名
举例:?用于匹配任意一个字符,a?b可以匹配abb、acb,不能匹配ab
实例:
例1:查找当前目录下以“.txt”结尾的文件
find . -name *.txt
例2:显示当前目录下以“.txt”结尾的文件的详细属性信息
ll *.txt
例3:查询文件名只有一个字符的文件
find . -name ?
例4:查询不是以.txt结尾的文件
find . ! -name *.txt
例5:查询以名字是bak或者bbk的文件
find -name "b[ab]k"
grep
find是查找文件,grep查找文件内容
不支持*和?等通配符
使用正则表达式搜索文本
命令格式:
grep [选项] 查找条件 目标文件
工作方式:在一个或多个文件中搜索符合查找条件的字符串,并打印出该字符串所在行的内容。不影响原文件内容。
选项:
--color=auto: 对匹配到的文本着色显示
-v: 显示不被pattern(查找条件)匹配到的行
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串
-e:实现多个选项间的逻辑or关系
-E:支持使用扩展正则表达式
正则表达式
概念:由普通字符和特殊字符(元字符)组成的字符串匹配的模式
功能:描述一个字符串模式
组成:
一般字符:没有特殊意义的字符
特殊字符(meta字符):元字符,有在正则表达式中有特殊意义
注意:
正则表达式规则与文件名通配符规则不同
正则表达式用于文本处理的场合
文件通配符用于文件处理的场合
不同软件对正则表达式的定义会有差异
linux正则表达式以行为单位处理字符串
[]用法
[]定义集合:
基本用法:
在一对方括号之间的字符为集合,表示匹配该集合内的任意单字符
如:单字符正则表达式[abcd]与a或b、c、d匹配
圆点、星号、反斜线在方括号内时,代表它们自己
如:[\*.]可匹配3个单字符
[]定义集合:
用减号-定义一个区间:
如[A-Z]、[0-9]、[A-Za-z0-9]
[][]集合中含左右中括号两个字符
减号在最后,则失去表示区间的意义
如:[az-]只与3个字符匹配
用^表示补集:
^在开头,表示与除集合内字符外的任意字符匹配
如:[^a-z]匹配任意非小写字符
[^][]匹配任意非中括号字符
^不在开头,则失去表示补集的意义
如:[a-z^]能匹配27个单字符
grep和find的区别
grep:查找文件中的字符串——类比在Word中查找内容
按行查找
find:查找文件或目录——类比windows“搜索”功能
重定向与管道命令
1. 输入输出重定向——重定向至/dev/null
/dev/null:特殊文件,不保存数据,写入其中的内容都会被丢弃。将命令的输出重定向到它,会起到“禁止输出”的效果
command > /dev/null 屏蔽stdout
command 2> /dev/null 屏蔽stderr
command > /dev/null 2>&1 屏蔽stdout和stderr:
2.管道符“|”
概念:一种通信机制,通常用于进程间通信。将前面一个进程的输出直接作为下一个进程的输入
作用:将前后的命令衔接在一起,形成一个管道线
格式:命令1 | 命令2 | …… | 命令n
例1:使用grep命令通过匹配文件/etc/passwd中的关键词/sbin/nologin找出了所有被限制登录系统的用户,计算一个有多少个用户。
找出被限制登录用户的命令是grep "/sbin/nologin" /etc/passwd;
统计文本行数的命令则是wc -l。
使用管道符连接两条命令:
[root@localhost ~]# grep "/sbin/nologin" /etc/passwd | wc -l
例2:ls -l /etc | less
例3:ps -ef | grep firefox 过滤firefox相关进程信息
例4:echo "123456" | passwd --stdin 用户名 修改密码