第四章 Linux查找和删选工具
来源:互联网 发布:查看对方mac地址 编辑:程序博客网 时间:2024/05/18 20:34
一,本章内容
1,查找工具find
2,查找文本工具grep
3,sed流编辑器
4,转换和删除重复命令tr
5,合并和分割工具
备注:本Linux系统为RHEL5.3
二,查找工具find
找出不知道在什么地方的文件,或是找出某一特征的文件,可以使用find。
1,find基本格式
find [path] [expression]
expression:用于定义find查找的表达式,表达式通常由选项,测试和动作3类参数组成。
选项用于指定find查找的目录,帮助等信息,常用的选项如下:
help:获得find帮助信息
depth:先从当前目录查找,再从当前目录的子目录查找
maxdepth LEVELS:向下搜索到第层目录,如果LEVELS=0时表示只在当前目录查找
mindepth LEVELS:至少向下搜索LEVELS层目录
mount:不搜索远程文件系统
follow:搜索如果遇到链接文件就和链接文件所指向的文件一并检查
测试参数:想搜索到一些具有某一特征的文件,应该使用一些测试参数,测试参数是一些使得输出更加详细的参数。常用的测试参数如下:
name:按文件名查找
perm:按文件权限查找
type:查找某一类型的文件
mtime +n -n:按文件修改的时间查找,+n表示修改时间距现在n天以前,-n表示修改时间距现在n天以内
atime +n -n:按文件的访问时间查找(使用方法与mtime相同)
size n [c]:搜索如果遇到链接文件就和链接文件所指向的文件一并检查
atime +n -n:按文件的访问时间查找(使用方法与mtime相同)
size n [c]:查找文件长度为n块的文件,c表示文件大小为n字节的文件
User:按文件属主查找
group:按文件属组查找
nouser:查找没有有效属主的文件(文件属主在/etc/passwd文件中不存在)
nogroup:查找没有有效属组的文件(文件属组在/etc/group文件中不存在)
动作参数用于指定如何查找和处理查找到的文件,常用的动作有如下几种:
prune:不在指定目录中查找
print:将查找到的文件输出到标准输出
exec:对查找到的文件执行exec动作后附带的Shell命令
ok:对查找到的文件执行ok动作后附带的Shell命令,在每次执行前将提示用户是否执行
2,按文件名称查找
忘记一个文件存放在什么位置时,可以使用name参数查找,也可使用文件名称通配符配合使用。
3,按文件权限查找
使用perm参数按权限查找,需使用八进制表示权限(绝对模式),按权限进行查找,以便发现可能导致泄密,不安全的内容等
在当前目录查找其他用户可读,写,执行的文件(这种情况应引起重视),此时应在权限数值前加一个横杠“-”(“-”表示使用包含模式)
4,按文件的时间戳记查找
当需清理过期的日志或文件时,可按照时间戳查找
查找7天以内修改的文件
查找1天前修改的文件
5,按文件的长度查找
使用size按文件大小查找时,可像按时间戳记查找那样使用+n表示文件长度大于n的文件,-n表示文件长度小于n的文件。默认情况文件大小的单位为块(一块512字节),如果以字计算文件长度,应在数字后写小写字母w
6,按文件的属主或属组查找
当管理员件将一用户或用户组从系统中清除时,可能需要将该用户或用户组的文件收集起来保存一段时间。
7,find工具其他参数
使用参数-o将两个不同的参数连接起来
在除了/etc目录的整个目录中查找以”.conf”结尾的文件
在本地系统查找
8,使用exec和ok处理查找到的文件
使用 exec, ok参数执行shell命令的格式如下:
-exec [Shell命令] { } \;
-ok [Shell命令] { } \;
9,使用xargs命令处理查找到的文件
使用exec和ok处理查找到的文件时,存在一些缺陷:
[1] 系统对参数exec和ok传递给shell命令的文件列表长度有一定限制,当find命令查找到用户很多时,会出现参数列表溢出等错误
[2] 参数对find找到的每一个文件发起一个相应的处理进程,当find命令查找到用户很多时,会影响系统性能。
Xargs构造一个参数列表交给命令执行,与exec,ok相比,xargs不一次获取并处理find找到的所有文件,每次获取一部分,处理完毕再获取。整个过程xargs都只发起一个处理进程,对系统性能影响很小。
使用xargs时需要借助管道。
10,find工具应用实例
使用exec和ok处理查找到的文件时,存在一些缺陷:
[1] 查找需要备份文件
[2] 列表过期文件
三,查找文本工具grep
从一大堆的命令输出或是文本文件中找到一两行的关键内容,可以使用grep工具进行筛选。
1,grep基本格式
grep [option] pattern [file]
grep工具在文件file中找到与字符串pattern匹配的内容,如果找到,则将整行输出到标准输出。常用选项:
i:忽略大小写
n:将结果输出的同时,也输出该行的行号
s:在没有查到匹配的内容时,不显示错误信息
l:从多个文件中查找时,只输出找到匹配内容的文件名称
h:从多个文件查找时,只输出匹配的内容,不显示文件名称
c: 只输出匹配内容的总行数
v:反转查找,即输出匹配内容以外的行
grep在工作时,总是以行为单位,先将文本第一行读入缓冲区进行查找,如找到匹配的字符串,就输出整行,如没有,就丢弃缓冲区内容并读入下一行文本继续查找,直至文本结束。
2,grep命令使用
系统有一个学生登记表sudent
[1] 查找包含92的行
[2] 使用c选项统计查找到的总行数
[3] 反转查找,查找不含有taix和lixia的行
[4] 多文件查找
3,行首,行尾匹配查找
利用文件的行首或行尾进行查找。
4,grep应用实例
[1] 精简配置文件
除去配置文件中的注释行,和默认配置语句。
四,sed 流编辑器
sed通常用来对多个文件或命令输出进行重复处理。
sed在工作时,总是以行为单位,先将文本第一行读入被称为模式空间的临时缓冲区内。然后再读取第一条编辑指令,使用指令中定义的模式和行号查找,编辑文本。完成编辑后,将结果输出并读取下一行,重复这个过程直到文本结束。除了模式空间以外,sed还使用一个称为保留空间的临时缓冲区,保留空间通常用于暂存编辑内容。
1,sed基本格式
sed [option] command input-file
sed [option] -f script-file input -file
常用的选项:
n∶不输出所有行,默认输出所有行。
e∶允许在该选项后面加一条新的编辑指令。当有多条编辑指令时 ,应该使用该选项逐一添加,如果编辑指令只有一条,可以不使用该选项
f∶用于指定具有编辑指令的脚本文件
h∶输出sed的帮助信息
常用的定位方式:
n∶表示行号为n的行
m,n∶表示一个行号的范围,从m行到n行
m,n!∶排除第m行到n行
/pattern/∶输出匹配pattern的所有行
/pattern1/patter2/∶表示匹配pattern1和pattern2的所有行(需用选项e将两个模式隔开)
/pattern/,~n∶从匹配pattern的行开始,向后的n行之间的所有行(即包括匹配行在内,一共n行)
/pattern/,+n∶从匹配pattern的行开始,向后的n行的所有行(即包括匹配行在内,一共n+1行)
n,/pattern/∶表示从第n行开始,到匹配pattern之内的所有行
常用命令:
a\text∶在指定行后面加入新的文本信息text
i\text∶在指定行前面加入新的文本信息text
c\text∶使用新的文本信息text替换指定行
p∶将指定行输出到标准输出
P∶将模式空间中第一个换行符”\n”之前的文本输出到标准输出(选项大写)
=∶输出匹配模式所在的行号
d∶移除模式空间中的行并读取下一行
D∶删除模式空间中最后一个换行符之前的文本。如果模式空间为空,则将下一行文本读取到模式空间中
r file∶从文件file中读取文本
w file∶将结果写入file文件中
q∶退出指令,使用q制令可以让sed立即退出,不再执行后面的操作
!command∶对没有被定位的行使用!之后的command编辑指令
P∶将与模式patter1匹配的文本用pattern2替换。默认情况下,只替换第一次匹配到的内容。指令s后的分隔符可用任意字符代替。Flag选项通常指示如何替换或者替换成功后要进行的操作,g:将所有匹配到的内容全部替换,n:仅对行内第n次匹配到的内容进行替换,p:如果进行了替换,就将模式空间的文本输出到标准输出,w file:如果进行了替换,就将模式空间的文本写入文件file中)
一个编辑指令只能对指定位置进行一次编辑操作,如要执行多次编辑操作,可使用{}将多条编辑指令放在其中。而对多个位置进行多次编辑可使用选项e添加多条编辑指令,也可使用管道并配合多个sed指令。
常用的分支语句
:label∶标记点,标记一个位置以便跳转语句跳转到指定位置
t lable∶测试指令,如果上一条替换指令成功执行,则转移到标记点label处。如没有label,则转移到末尾
b label∶无条件转移到label处继续执行。如没有label,则转移到末尾
#:一般用于脚本的注释,sed将忽略后面的内容。如出现在脚本的第一行,且后面是”n”(即”#n”),sed将不禁止默认的输出所有行。
2,显示和编辑行
输出文本第三行
一使用模式[tTangwei]定位行
删除行
3,插入和修改行
使用a在第3行后插入一个新行
使用行尾匹配插入新行
使用换行符插入多行
使用r命令读取exfile的内容并插入到第3行之后
4,替换文本和其他编辑指令
s/pattern1/pettern2/flag
y/pattern1/pattern2/flag
将匹配到的pattern1用pattern2替换,s与y都是替换,不同的是y要求pattern1与patter2的长度必须相等。
仅对第3行的第1个匹配到的28用27替换
一次执行多个命令
5,其他
还有分支结构,一般不常用。
另外还有格式化文本数据抽取工具awk,功能比较强大
五,转换和删除重复命令tr
tr命令用于处理字符转换,删除重复字符等任务。
1,tr基本格式
tr [option] [string1] [string2]
在tr的基本格式中,string1用于查询字符串,string2用于转换查询到的字符串。tr不能读取文件,因此如果要转换文件中的内容,可以使用重定向输入或管道的方法。
常用选项:
c∶使用string1字符集中的补集替换。要求的字符集为ASCII
d∶删除string1中包含的所有字符
s∶将所有重复出现的字符进行压缩,只保留一个一个字符,即删除重复的字符。
String1和string2这两个字符串的形式可以是字符的范围,单个字符,多字符列表等。常见如下:
[a-z]: 小写字母A-Z范围内的字符及其组合而成的字符串
[A-Z]: 大写字母A-Z范围内的字符及其组合而成的字符串
[0-9]: 数字0-9范围内的字符及其组合
[C*n]: C表示字符或字符组合,n表示出现次数。即字符或字符组合出现n次的字符串。
2,tr转换
小写字母转换大写字母
3,tr删除重复
删除重复字符,需要指定字符串或文本中可能存在重复的字符集合,因此仅需要使用string1即可。
删除test2文本中空行
注意:tr命令在执行时会逐字符查询处理,因此应特别注意字符集string1的选择。
六,合并和分割工具
Sort处理的文本可以来自一个文本文件,也可以来自标准输入和管道等。
1,sort排序指令
sort [option] [file]
b∶按字段进行分类并忽略前面的空格或制表符
d∶按字典的顺序进行排序,将除空格和字母以外的字符排除
f∶排序时忽略大小写
g∶根据数值进行排序
i∶只考虑可打印的字符
M∶将字符按月份进行比较
n∶按数值进行比较排序
r∶反向排序
c∶测试文件内容是否已经排了序,若无任何返回信息,表示已排序
k∶指定排序的关键字
m∶合并已经排序的文件,不进行排序
o∶将结果写入文件内,不再输出到标准输出
s∶通过屏蔽最后的分类比较稳定排序
t∶使用指定的字符作为字段分隔符
T∶按临时文件放入指定目录中
u∶如果与选项c一起使用,则检查是否在排序时已经去除重复的行,没有选项c时,则去除重复行
z∶用一个0字节作为结束,而不是一个换行符
指定排序关键字为第5个字段的第8个字符
合并文件,合并前的文件应该已经排好序
2,cut数据剪切命令
cut [option] file
Cut命令工作时,以行为单位剪切整个文本(对文本每一行生效)。
常用选项:
b∶表示要操作的对象是字节
c∶表示要操作的对象是字符
f∶表示要操作的对象是字段
d∶指定字段分隔符,默认制表符Tab
s∶表示不包含没有字段分割符的行,通常用于去掉注释等
剪贴的范围表示:
N∶表示第N个字节,字符或字段
N-∶表示从N到一行结束内的所有文本
N-M∶从N到M之间的所有文本
-M∶从开始到M之间的所有文本
-∶从开始到结束的所有文本
剪切所有行的第5-8个字节
3,paste数据粘贴指令
paste [option] [file...]
常用选项:
d∶对新生成的文本指定新的字段分隔符,默认制表符Tab
s∶将粘贴的内容合并成行(即横向粘贴)。
使用选项d指定第一第二字段用Tab制表符分割,第二第三使用”#”分割
4,join数据连接指令
join [option] file1 file2
常用选项:
a∶用于输出两个文件中有关联的和没有关联的行,将有关联的的行执行连接后输出,没有关联的行按预定的格式输出
e∶在文件1和文件2中查找关联字段,如没有关联字段,则将无关联的行相应的字段用参数指定的字符串替代
i∶在连接过程中忽略大小写
j∶使用指定的字段作为关联字段连接
o∶格式化输出
t∶设置字段间的分隔符,默认空格或者制表符Tab
v∶与选项a作用相同,但只输出无关联的行
使用join命令时,join用数字1表示参数文件1,用数字2表示参数文件2
5,uniq去除重复指令
Uniq经常用于去除一个文本中的重复行。Sort去除重复行,两者不同。用sort去除重复行时,sort将整个文本中的多个重复的行去除,仅保留一行,而uniq会将多个连续重复的行去除,仅保留一行。
uniq [option] [input [output]]
常用选项:
c∶用于输出重复行的重复次数
d∶仅输出重复的行
f∶忽略一些字段,仅比较指定的字段
i∶忽略大小写
s∶忽略一些字符,仅比较指定的字符
u∶输出不重复的行
w∶指定要比较的字符位置
使用f忽略第一个字段,从第2个字段的第3个字符开始去除重复的行
6,split分割文件指令
split经常用于将很大的文件分割成若干个小文件。
split [option] [input file] [output file]
常用选项:
l∶按行对文件进行分割
b∶按字节对文件进行分割
C∶按字节对文件进行分割,split会尽量保持一个整行
d∶使用数字作为输出文件的后缀
用选项l每3行划分为一个文件,将划分后的文件命名为studentnew
- 第四章 Linux查找和删选工具
- Linux查找和筛选工具
- 第四章---查找
- linux 好工具之 查找 *.* 文件和字段
- Linux下的代码阅读和查找工具
- Linux 查找文件工具find
- Linux 查找文本工具grep
- Linux 查找工具 find、grep
- 关键词分析和查找工具
- 二分查找另类--【编程珠玑第四章】
- 第四章 二分查找(数组)
- linux查找和替换
- 第四章 Linux环境
- 第四章 Linux环境
- LInux第四章
- Linux程序设计第四章
- 第四章 Linux环境
- 第四章 Linux环境
- mysql存储过程中if...else常见用法
- 矩阵填充问题2
- C#定时器
- Debug---Eclipse断点调试基础-完整篇
- iOS BezierPath 贝塞尔曲线的绘制
- 第四章 Linux查找和删选工具
- 关于onConfigurationChanged
- GDI+实现png图片加载
- pthread-pool
- 24.java语言基础-位运算符
- 树:二叉树的下一个结点
- PMP考试【6】三点估算法 PERT计划评审技术
- Could not calculate build plan: Plugin org.apache.maven.plugins:maven-war-plugin:2.1.1 or one of
- linux 配置jmeter安装