shell编程四剑客find、sed、awk、grep使用基础,方法及参数说明

find

格式:find path -option [ -print] [-exec -ok command] { } ;
功能:find工具主要用于操作系统文件、目录的查找;
option常用参数:

参数功能案例
-name filename查找名为filename的文件find /data/ -name “*.txt”
-type b/d/c/p/l/f查找块设备、目录、字符设备、管道、符号链接、普通文件find /data/ ! -type d 查找/data/目录下的非文件夹
find /data/ -type d丨xargs chmod 755 -R查找目录类型并将权限设置为755
-size n[c]查找长度为n块[或n字节]的文件find /data/ -size +10M查找问价大小大于10MB的文件
-perm按执行权限来查找find /data/ -perm 755查找/data/目录权限为755的文件或者目录
-mtime -n +n按文件更改时间来查找文件,-n指n天以内,+n指n天以前find /data/ -mtime +30-name "*.log"查找30天以前的log文件
-atime -n +n按文件访问时间来查找文件
-ctime -n +n按文件创建时间来查找文件
-mmin -n +n按文件更改时间来查找文件,-n指n分钟以内,+n指n分钟以前
-amin -n +n按文件访问时间来查找文件
-cmin -n +n按文件创建时间来查找文件
综合案例查找/data/目录以.log结尾,问价大于10kb的文件,同时cp到/tmp目录find /data/ -name “*.log” -type f -size +10k -exec cp {} /tmp/ \
综合案例查找/data/目录以.log结尾,30天以前的文件,大小大于10MB并移动到/tmp目录find /data/ -name “*.log” -type f -mtime +30 -size +10M -exec mv {} /tmp/ \

sed

格式:sed [ -Options ] [ ‘Commands’] filename;
功能:sed是一个非交互式文本编辑器,与vim编辑器类似;
常用参数:

参数功能
x
x,y指定从x到y的行号范围
r从另一个文件中读文件
w将文本写入到一个文件
y变换字符
q第一个模式匹配完成后退出
p打印匹配行
d删除定位行
s使用替换模式替换相应模式
a在定位行号后进行追加文本信息

案例:

  1. 替换jfedu.txt文本中old为new
    sed ’s/old/new/g’ jfedu.txt
  2. 打印jfedu.txt文本第一行至第三行
    sed -n ‘1,3p’ jfedu.txt
  3. 打印jfedu.txt文本中第一行与最后一行
    sed -n ‘1p;$p’ jfedu.txt
  4. 在jfedu.txt中查找jfedu躲在行,并在其下一行添加word字符,a表示在其下一行添加字符串,i表示在上一行添加字符串
    sed ‘/jfedu/aword’ jfedu.txt
  5. sed读取系统变量,进行变量替换
    WEBSITE=www.baidu.com
    sed “s/www.jd.com/$WEBSITE/g” jfedu.txt

awk

格式:awk ‘pattren + {action}’ file
功能:awk是一个优良的文本处理工具,Linux及UNIX环境中现有的功能最强大的数据处理引擎之一,是一个航机文本高效处理工具;

  1. awk基本语法参数:
  • 单引号 ’ ’ 是为了和shell命令区分开
  • 大括号 { } 表示一个命令分组
  • pattern是一个过滤器,表示匹配pattern条件的行才进行action处理
  • action是处理动作,常见动作为print
  • 使用#作为注释,pattern和action可以只有其一,但不能两者都没有
  1. awk内置变量
  • FS:分隔符,默认是空格
  • OFS:输出分隔符
  • NR:当前行数,从1开始
  • NF:当前记录字段个数
  • $0:当前记录
  • 1   1~ 1 n:当前记录第n个字段(列)

案例:
1.awk以空格、冒号、\t、分号为分割,
awk -F ‘[ :\t; ]’ ‘{print $1}’ jfedu.txt
2.awk以冒号分割,打印第一列,同事将内容追加到/tmp/awk.log下
awk -F: ‘{print $1 >>"/tmp/awk.log"}’ jfedu.txt
3.打印jfedu.txt文件中的第三行至第五行,NR表示打印行,$0表示文本所有域
awk ‘NR == 3,NR == 5 {print}’ jfedu.txt
awk ‘NR == 3,NR == 5 {print $0}’ jfedu.txt
4.打印jfedu.txt文件中的第三行至第五行的第一列与最后一列,
awk ‘NR == 3,NR==5 {print 1 , 1, 1,NF}’
5.awk引用shell变量,使用-v或者双引号+单引号
awk -v STR=hello ‘{print STR,$NF}’ jfedu.txt
STR=“hello”;echo | awk '{print " ’ ${STR} ’ ";}’

grep

格式:grep - [ acinv ] ‘word’ filename
功能:全面搜索震泽表达式,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
常用参数:

参数功能
-v方向选择,即显示不包括匹配文本的所有行
-i忽略大小写
-n顺便输出行号
-c计算找到的符合行的次数

通配符:

参数功能
*0个或者多个字符、数字
?匹配任意一个字符
#表示注解
管道符号
;多个命令连续执行
&后台运行指令
!逻辑运算非
[ ]内容范围,匹配括号中内容
{ }命令块,多个命令匹配

案例:

命令功能
grep -c “test” jfedu.txt统计test字符总行数
grep -i “TEST” jfedu.txt不区分大小写查找TEST所有行
grep -n “test” jfedu.txt打印test的行及行号
grep -v “test” jfedu.txt不打印test的行
grep “test[53]” jfedu.txt以字符test开头,接5或3的行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值