四、shell编程四剑客

sed的使用

  1. 使用vim在打开的文件中替换内容

    :%s/168/134/g		#把文件中的所有168替换为134
    
  2. 在文件外部替换文件中的内容

    sed -i 's/192.168/192.134/g' list.txt		#把list.txt文件中的'192.168'替换为'192.134'
    #如不加-i 就是预修改  不会更改到文件
    
  3. 在每一行的最开始添加一个空格

    sed -i 's/^/& /g' list.txt   			#'^'表示行首
    
  4. 在每行的末尾添加一个123,包括空行

    sed 's/$/&123/g' list.txt				#'$'表示行尾
    
  5. 在匹配串下一行添加字符

    sed '/dest/a #####' list.txt			#在'dest'字符的下一行添加字符'#####' 'a'表示下一行
    
  6. 在匹配串的上一行添加字符

    sed '/src/i #####' list.txt				#在'src'字符的上一行添加字符'#####' 'i'表示上一行
    
  7. 打印包含匹配串的行

    sed -n '/dest/p' list.txt				#打印匹配'dest'的行 'p'表示打印
    
  8. 打印指定行

    sed -n '1p' list.txt					#打印第一行
    sed -n '1,2p' list.txt					#打印1,2行
    sed -n '1,4p' list.txt					#打印1到4行
    
  9. 对一个文件中的数字进行排序

    对下面这些数字进行排序,并输出最大值和最小值

    3232
    533 646456 656
    546
    543345453
    66
    64
    23
    343242
    646 665
    654 65
    76 7676 765 44 33
    23
    2
    
    cat sort.txt | sed 's/ /\n/g' | grep -v '^$' | sort -nr | sed -n '1p;$p'
    # '1p'表示第一个 '$p'表示最后一个
    # grep -v 表示不匹配 此处的 grep -v '^$' 表示不匹配空行
    

    输出结果

在这里插入图片描述

grep的使用

grep '^3' sort.txt					#匹配以3开头的行
grep '3$' sort.txt					#匹配以3结尾的行
grep '^5' sort.txt | grep '3$'		#匹配以5开头,以3结尾的行
grep '[a-z]' list.txt 				#匹配包含字母a-z的行

grep匹配真实ip

匹配下列内容中的真实ip

192.168.150.
192.168.150.29
192.168
192
192.168.150.1234

使用命令

cat ip.txt | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}$'

egrep匹配多个

egrep "14|15" list.txt 
#同时匹配包含 14 或 15 的行

awk的使用

  1. 打印某一列

    cat ip.txt | awk "{print $2}"		#打印第二列 以空格分隔
    
  2. 打印/etc/passed文件中的用户名

    cat /etc/passwd | sed 's/:/ /g' | awk '{print $1}'
    #把':'号替换为空格 再打印第一列
    
    cat /etc/passwd | awk -F: '{print $1}'
    # -F参数指定分割符
    # print $NF 表示最后一列
    
  3. 查看根目录磁盘的使用率

    df -h | grep '/$' | awk '{print $5}' | sed 's/%//g'
    

find的使用

#查找根目录下所有名字为list.txt的文件
find / -name list.txt

#查找当前目录下名字为list.txt的文件
find . -name list.txt

#只查找一级目录
find . -maxdepth 1 -name list.txt

#查找当前目录下类型为文件并且以.sh结尾的文件
find . -maxdepth 1 -type f -name '*.sh'

#查找今天修改过的 .sh 文件
find . -maxdepth 1 -type f -name '*.sh' -mtime -1

#查找一天前修改过的 .txt 文件
find . -maxdepth 1 -type f -name '*.txt' -mtime 1

#查找文件并拷贝到指定目录下
find . -maxdepth 1 -name '*.sh' -mtime 1 -exec cp {} /tmp/ \;

#查找指定大小的文件
find . -maxdepth 1 -type f -size 2k
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值