Linux的体系结构
查找特定文件
find -name [filename] 当前目录递归查找某个文件
find -iname [filename] 当前目录递归查找某个文件(忽略大小写)
find / -name [filename] 全局递归查找某个文件(/定位到系统根目录)
find ~ -name [filename] 当前用户目录查找某个文件(~定位用当前用户目录,通配符支持模糊查询)
man find(查找find指令的说明)
检索文件内容
grep [查找内容] [查找文件](支持模糊查询)
传统的 grep 程序, 在没有参数的情况下, 只输出符合 RE 字符串之句子. 常见参数如下:
-v: 逆反模示, 只输出"不含" RE 字符串之句子.
-r: 递归模式, 可同时处理所有层级子目录里的文件.
-q: 静默模式, 不输出任何结果(stderr 除外. 常用以获取 return value, 符合为 true, 否则为 false .)
-i: 忽略大小写.
-w: 整词比对, 类似 <word> .
-n: 同时输出行号.
-c: 只输出符合比对的行数.
-l: 只输出符合比对的文件名称.
-o: 只输出符合 RE 的字符串. (gnu 新版独有, 不见得所有版本都支持.)
-E: 切换为 egrep .
管道操作符|
可将指令连接起来,前一个指令的输出作为后一个指令的输入
使用管道注意的要点
1、只处理前一个命令正确输出,不处理错误输出
2、右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
对文件内容做统计
awk
语法:awk [options] 'cmd' file
1、一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
2、将切片直接保存在内建的变量中,2..($0表示行的全部)
3、支持对单个切片的判断,支持循环判断,默认分隔符为空格
//按空格切片,打印第一个切片和第四个切片
awk '{print $1,$4}' filename
//如果第一切片等于tcp并且第二切片等于1就打印整行
awk '$1=="tcp" && $2==1{print $0}' filename
//如果第一切片等于tcp并且第二切片等于1 或者 是第一行 就打印整行
awk '($1=="tcp" && $2==1) || NR == 1 {print $0}' filename
//按逗号分隔,打印第二切片
awk -F ',' '{print $2}' filename
/*
*自定义数组engiarr,key为第一切片,value为相同切片出现的次数,扫描结束后循环数组engiarr
*打印出key和value
*/
awk '{engiarr[$1]++}END{for(i in engiarr)print i "\t" engiarr[i]}'
批量替换文本内容
sed
语法:sed [option] 'sed command' filename
适合用于对文本的行内容进行处理
/*
*-i替换并保存到文本,不加-i是不会保存到文本的,s是对字符串的操作
*第一个斜杠到第二个斜杠之间就是要查找的内容
*第二个斜杠到第三个斜杠之间就是要替换的内容,^就是以什么开头的内容
*/
sed -i 's/^Str/String/' filename
//$就是以什么结尾的内容
sed -i 's/\.$/;/' filename
//g就是全文替换,不加就只会替换每行的首个符合的内容
sed -i 's/\.$/;/g' filename
//d就是删除符合内容的行
sed -i 's/\.$/d' filename
网友评论