文本三剑客

目录

grep

awk

工具介绍

awk 命令

awk 常见的内置变量可直接用

awk 命令使用举例

打印磁盘已经使用情况

打印字符串

打印字符串确定文件有多少行

提取 ip地址

打印 /etc/passwd 所有用户名

打印多列内容

提取 /etc/passwd 以 root 开头的行

打印倒数第二行

当前处理的行的行号

NR==n 代表行号,取第几行

NR%2==0 取偶数行;NR%2==1 取奇数行

NR==m,NR==n 取 m到n 区间行

取 uid 数值范围

统计 /etc/fstab 文件中每个文件系统类型出现的次数

提取主机名并放入原文件

统计 /etc/fstab 文件中每个单词出现的次数

提取字符串 Yd$C@M05MB%9&Bdh7dq+YVixp3vpw 中的所有数字

sed

sed 命令

搜索替代

sed 命令使用举例

查看文件,打印全部内容

打印指定行内容

根据地址,打印指定多行内容

打印多行后退出

打印最后一行,使用通配符 $

过滤关键字

#,/关键字/p’ 从第 #行 开始匹配

‘/关键字/,#’ 找到第 #个 关键字为止

打印文本的奇数/偶数行

删除指定行

删除指定的多行

删除汇总

插入

变量

分组调用

提取ip地址


grep

—— 格式:grep 选项 查找条件 目标文件

选项作用
-color=auto对匹配到的文本着色显示,自带的功能
-m 数字匹配 多少次后停止 (多个匹配只取第一个)
-v显示不被 pattern 匹配到的行,即取反
-i忽略字符大小写
-n显示匹配的行号
-c统计匹配的行数
-o仅显示匹配到的字符串
-q静默模式,不输出任何信息
-A匹配到的行后 n 行显示出来
-B前 n 行
-C前后各 n 行
-e实现多个选项间的逻辑或者关系
-E使用ERE,相当于 egrep
-F不支持正则表达式,相当于 fgrep
-ffile 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-r递归目录,但不处理软链接
-R递归目录,但处理软链接
-w匹配整个单词

awk

工具介绍

  • awk 是一种处理文本文件的语言,是一个强大的文本分析工具

  • 可以在无交互的模式下实现复杂的文本操作

  • 相较于 sed 常作用于一整个行的处理,awk 则比较倾向于一行当中分成数个字段来处理,因为awk 相当适合小型的文本数据

awk 命令

—— 格式:awk 选项 '表达式{处理动作}'

选项作用
-F指定分隔符
-v自定义变量
-f脚本

awk 常见的内置变量可直接用

选项作用
FS列分割符;指定每行文本的字段分隔符,默认为空格或制表位;与 "-F" 作用相同
NF当前处理的行的字段个数
NR当前处理的行的行号(序数)
$0当前处理的行的整行内容
$n当前处理行的第n个字段(第n列)
FILENAME被处理的文件名
RS行分隔符;awk 从文件上读取资料时,将根据 RS 的定义把资料切割成许多条记录,而 awk 一次仅读入一条记录,以进行处理,预设值是 ’\n’
OFS输出时的分隔符

awk 命令使用举例

打印磁盘已经使用情况

打印字符串

打印字符串确定文件有多少行

提取 ip地址

打印 /etc/passwd 所有用户名

打印多列内容

提取 /etc/passwd 以 root 开头的行

打印倒数第二行

当前处理的行的行号

NR==n 代表行号,取第几行

NR%2==0 取偶数行;NR%2==1 取奇数行

NR==m,NR==n 取 m到n 区间行

取 uid 数值范围

统计 /etc/fstab 文件中每个文件系统类型出现的次数

提取主机名并放入原文件

统计 /etc/fstab 文件中每个单词出现的次数

提取字符串 Yd$C@M05MB%9&Bdh7dq+YVixp3vpw 中的所有数字


sed

—— 格式:sed 选项 {脚本(如果没有其他脚本)} 输入文件

—— sed 是从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行,直到最后一行;每当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(PatternSpace),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾;一次处理一行的设计模式使得 sed 性能很高,sed 在读取大文件时不会出现卡顿的现象;如果使用 vi 命令打开 几十M上百M 的文件,明显会出现有卡顿的现象,这是因为 vi 命令打开文件是一次性将文件加载到内存,然后再打开;sed 就避免了这种情况,一行一行的处理,打开速度非常快,执行速度也很快

sed 命令

—— sed 选项 自身脚本语法 支持标准输入管道

选项作用
-n不输出模式空间内容到屏幕,即不自动打印
-e多项编辑
-f从指定文件中读取编译脚本
-r使用扩展正则表达式
-i备份文件并原处编辑

常用操作

选项作用
s替换,替换指定字符
d删除,删除选定的行
a增加,在当前行下面增加一行指定内容
i插入,在选定行上面插入一行指定内容
c替换,将选定行替换为指定内容
Y字符转换,转换前后的字符长度必须相同
p打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容; 如果有非打印字符,则以 AscII 码输出。其通常与_n"选项一起使用
=打印行号
l(小写的L)打印数据流中的文本和不可打印的 ASCII 字符(比如结束符 s、制表符 \t)

搜索替代

—— 格式:sed 行范围 s/旧字符串/新字符串/替换标记

—— 替换标记

  1. 数字 :表明新字符串将替换第几处匹配的地方

  2. g : 表明新字符串将会替换所有匹配的地方

  3. p : 打印与替换命令匹配的行,与 -n 一起使用

  4. w 文件 :将替换的结果写到文件中

将test里凡是带r..t的字段后面都加上er

—— sed -n 's/r..t/&er/g' test

sed 命令使用举例

sed ''    :交互模式输入一行,自动打印一行相同的
​
sed -n '' :交互模式输入一行,关闭自动打印
​
sed -n '' :加上p又恢复自动打印

查看文件,打印全部内容

打印指定行内容

根据地址,打印指定多行内容

打印多行后退出

打印最后一行,使用通配符 $

过滤关键字

#,/关键字/p’ 从第 #行 开始匹配

‘/关键字/,#’ 找到第 #个 关键字为止

打印文本的奇数/偶数行

删除指定行

删除指定的多行

删除汇总
sed '$d'  test                  #删除最后一行
​
sed '/^$/d' test              #删除空格
​
sed 'd' test                     #全部删除
​
sed '/d$/d' test              #删除以d结尾的行
​
sed '/d$/!d' test             #!取反,删除除了以d结尾的行
​
sed '/a/,/c/d'   test         #删除从a开头的到c开头的,不论a-c之间有多少行都会被删除,直到匹配不到为止
​

插入

sed '/aa/c xxx' test      #将第一行的aa替换成xxx,c默认是替换第一行
​
sed '3c hhh'  test        #将第三行,全部替换成hhh
​
sed '1,3a  6666' test     #在1-3行的下面增加6666
​
sed '1,3i  6666' test     #在1-3行上面增加6666
​
sed '2r /opt/hyh' test   #r读入,在第二行下面,读入opt下的hyh文件内容
​

变量

sed -nr "/$name/p" /etc/passwd 
#提取变量用户名
#变量需要加双引号
​

分组调用

#只有扩展正则表达式才能支持分组。
​
#分组使用()(),调用第一段使用\1
​
echo  11aaxx |sed -r 's/(11)(aa)(xx) /\1/'   #调用第一组
​
11
​
echo  11aaxx |sed -r 's/(11)(aa)(xx) /\2/'   #调用第二组
​
aa
​
echo  11aaxx |sed -r 's/(11)(aa)(xx) /\1\2/'  #调用第一、二组
​
11aa
​
echo  11aaxx |sed -r 's/(11)(aa)(xx) /\1\2\3/'  #调用所有分组
​
11aaxx
​

提取ip地址
ifconfig ens32 |sed -rn '2s/.*(inet) ([0-9.]+)  (netmask) ([0-9.]+)  (broadcast) ([0-9.]+).*/\2/p'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值