Linux中sed和awk语句的使用

79 篇文章 0 订阅

1.sed

sed:stream editor :一次处理一行内容,处理时,把当前的行存储在临时缓冲区,处理完后,输送到屏幕

sed [参数] ‘命令’ file

参数含义
p显示
d删除
a添加
c替换
i插入

1)p
查看带:的行
查看带#的行
查看不带#的行
在这里插入图片描述
查看文件/etc/fstab的二到六行
在这里插入图片描述
2)d
删除文件/etc/fstab中带UU的行
在这里插入图片描述
删除文件/etc/fstab中带#的行
在这里插入图片描述
删除文件/etc/fstab中空行
在这里插入图片描述
删除文件/etc/fstab中带1到4的行
在这里插入图片描述
3)a
在westos文件中westos的后面添加hello
在这里插入图片描述

4)c
在westos文件中替换kikiki为hello world
在这里插入图片描述
在westos文件中全局替换kikiki为hello world
在这里插入图片描述
在westos文件中全局替换kikiki为hello换行 world
在这里插入图片描述

5)i插入
在westos文件中kikiki前插入word换行westos
在这里插入图片描述
注意:以上五种操作并不改变文件
6)-i:改变原文件内容
在westos文件中替换westos为redhat并改变文件。
在这里插入图片描述
在westos文件中全局替换k为redhat并改变文件。
在这里插入图片描述
练习:改变网络端口号

#!/bin/bash
sed -i "/^Listen /cListen $1" /etc/httpd/conf/httpd.conf
echo  "Port has changed!"
echo -e "NOW,Port is $1!"
systemctl restart httpd

在这里插入图片描述

2.awk报告生成器

awk处理机制:根据模式一次从文件中抽取一行文本,对这行文本进行切片(默认使用空白字符作为分隔符)
在这里插入图片描述

[root@localhost ~]# awk '{print FILENAME,NR}' /etc/passwd	
输出文件名,和当前操作的行号
	/etc/passwd 1
	/etc/passwd 2


[root@localhost ~]# awk -F: '{print NR,NF}' /etc/passwd
输出每次处理的行号,以及当前以":"为分隔符的字段个数
	1 7	1代表第一行,共七列
	2 7	2代表第二行,共七列

练习:找出UID小于2的用户

[root@localhost mnt]# awk -F: '$3<2 {print $1,$3}' /etc/passwd
以:分列(也可写为-F":",要求第三列小于2,并输出第一和第三列
	root 0
	bin 1

BEGIN{ }:读入第一行文本之前执行的语句,一般用来初始化操作
{ }:逐行处理
END{ }:处理完最后以行文本后执行,一般用来处理输出结果
练习:求出UID小于500的用户个数

[root@localhost mnt]# awk -F: 'BEGIN{i=0} {if($3<500) {i++}}  END {print i}' /etc/passwd
	31

求出UID小于500的用户个数和UID大于500的用户个数
在这里插入图片描述
输出以bash结尾的行
在这里插入图片描述
输出第三行
在这里插入图片描述
输出偶数行
在这里插入图片描述
输出奇数行
在这里插入图片描述
输出大于3小于5的行
在这里插入图片描述
统计文件总字段数
在这里插入图片描述
在输出的文件前加hahahah,统计行号,输出内容,结尾输出WESTOS。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值