Linux与Bash课程(grep sed awk 三剑客)

grep

grep定义

根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行

grep命令形式

grep [OPTIONS] PATTREN [FILE…]
pattern为正则表达式

选项

语法说明
-v显示不被pattern匹配到的行
-i忽略字符大小写
-n显示匹配的行号
-c统计匹配的行数
-o仅显示匹配到的字符串
-E使用ERE,相当于egrep

练习

1.查找文件file.txt内容包含root的行号

grep -n root file.txt

2.查找文件file.txt内容不包含root的行号

grep -vn root file.txt

3.查找以S开头的行

grep -n ^s file.txt

4.查找以n结尾的行

grep -n n$ file.txt

sed

sed定义

sed是流编辑器,一次处理一行内容

sed处理流程

在这里插入图片描述

命令形式

sed [-hn…] [-e< script>][-f< script FILE>][FILE]
-h:显示帮助
-n:仅显示script处理后的结果
-e< script>:以选项中指定的script来处理输入的文本文件
-f< script>:以选项中指定的script文件来处理输入的文本文件

常用动作

语法语义示例示例解释
a新增sed -e ‘4 a newline’在第四行后新增加一行“newline”的文字
c取代sed -e ‘2,5c No 2-5 number’将第2,5行内容换为“No 2-5 number”
d删除sed -e ‘2,5d’将第2,5行内容删除掉
i插入sed -e ‘2i newline’在第2行前面插入一行“newline”的文字
p打印sed -n ‘/root/p’两个“/”中间夹的是正则,p代表打印处来
s取代sed -e ‘s/old/new/g’用后面的“new”取代前面的“old”,g表示全局,全部替换

上述对的增删插入等操作都不会对原文件进行改变!!
如果直接修改文件内容的话:

sed -i 's/root/hello/g' test.txt

awk

awk定义

把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理

处理流程

在这里插入图片描述

命令形式

awk 'pattern+action'[FILEnames]

-pattern:正则表达式
-action:对匹配到的内容执行的命令(默认为输出每行内容)

常用参数

FILENAME :awk浏览的文件名
BEGIN:处理文本之前要执行的操作
END:处理文本之后要执行的操作
FS:设置输入域分隔符,等价于命令行 -F选项
NF:浏览记录的域的个数(列数)
NR:已读的记录数(行数)
OFS:输出域分隔符
ORS:输出记录分隔符
RS:控制记录分隔符
$0:整条记录
$1:表示当前行的第一个域…以此类推

练习

搜索/etc/passwd有root关键字的所有行,并显示对应的shell

awk -F:'/root/{print $7}' /etc/passwd

打印/etc/passwd/的第二行信息

awk -F:'NR==2{print $0}' /etc/passwd

使用begin加入标题

awk 'BEGIN {print "BEGIN","BEGIN"}{print $1,$2}' /etc/passwd

自定义分隔符

echo “111 222|333 444|555 666”|awk 'BEGIN{RS="|"}{PRINT $0}'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值