软件测试/测试开发丨Linux 数据处理三剑客学习笔记

一、Linux 三剑客之 grep

1、 内容检索

  • 获取行(单行) grep pattern file
  • 获取内容 grep -o pattern file
  • 获取上下文 grep -A -B -C pattern file

image

image

image

image

2、 文件检索

  • 递归搜索 grep pattern -r dir/
  • 展示匹配文件名 grep -H 111 /tmp/1
  • 只展示匹配文件名 grep -l 111 /tmp/1

image

3、 范围约束

  • man grep命令可以找到grep的主流用法
  • 忽略大小写 grep -i pattern file
  • 不显示匹配的行 grep -v pattern file
  • 使用扩展正则表达式 grep -E pattern file
  • 文件范围和目录范围约束 grep 111 -r /tmp/demo/ --include "11*"

4、 进程检索

  • 进程过滤场景比较特殊,需要注意
  • grep 本身会开启新进程,所以需要单独过滤掉 grep 进程
ps -ef | grep ssh(使用管道连接,两个命令ps、grep都会同时执行,两个进程都会启动,使用grep进行过滤,这个命令也在执行,它里面也有ssh,所以带有ssh的进程都被搜索出来了)503  2507     1   0 29 821  ??         0:00.08 /usr/bin/ssh-agent503 50022 11154   0  8:11下午 ttys002    0:00.00 grep sshps -ef | grep ssh  | grep -v grep(通过 -v 过滤掉包含grep的进程)503  2507     1   0 29 821  ??         0:00.08 /usr/bin/ssh-agent

二、Linux三剑客之awk

1、 awk 基本语法

  • awk 是 linux 下的一个命令,同时也是一种语言解析引擎
  • awk 具备完整的编程特性。比如执行命令,网络请求等
  • 精通 awk,是一个 linux 工作者的必备技能
  • 语法 awk 'pattern{action}'

2、 awk 上下文变量

  • 开始 BEGIN 结束 END
  • 行数 NR
  • 字段与字段数 11 12 … $NF NF
  • 整行 $0
  • 字段分隔符 FS
  • 输出数据的字段分隔符 OFS
  • 记录分隔符 RS
  • 输出字段的行分隔符 ORS

3、 字段变量用法

  • -F 参数指定字段分隔符,可以用|指定多个- 多分隔符 -F ‘<|>’
  • BEGIN{FS=“_”} 也可以表示分隔符
  • $0 代表当前的记录
  • $1 代表第一个字段
  • $N 代表第 N 个字段
  • $NF 代表最后一个字段
  • $(NF-1) 代表倒数第二个字段

4、 pattern 表达式

  • 正则匹配 $1~/pattern/ /pattern/
  • 比较表达式 $2>2 $1=="b"

5、 awk pattern 匹配表达式案例

  • 开始和结束 awk 'BEGIN{}END{}'

  • 正则匹配

    • 整行匹配 awk '/Running/'
    • 字段匹配 awk '$2~/xxx/'
  • 行数表达式

    • 取第二行 awk 'NR==2'
    • 去掉第一行 awk 'NR>1'
  • 区间选择

    • awk '/aa/,/bb/'
    • awk '/1/,NR==2'

6、 action 行为表达式 {action}

  • 打印 {print $0} {print $2}
  • 赋值 {$1="abc"}
  • 处理函数
  • 原始内容 $0
  • 更新后内容 {$1=$1;print $0}

7、 单行转多行

echo 1:2:3 | awk 'BEGIN{RS=":"}{print $0}'
1
2
3

8、 多行变单行

echo '1
2
3' | awk 'BEGIN{RS="";FS="\n";OFS=":"}{$1=$1;print $0}'
1:2:3
echo '1
2
3' | awk 'BEGIN{ORS=":"}{$1=$1;print $0}'
1:2:3:

9、 计算平均数

echo '1,10
2,20
3,30' | awk 'BEGIN{total=0;FS=","}{total+=$2}END{print total/NR}'
20

10、 awk 的词典结构 array

  • array 是稀疏矩阵,类似 python 的词典类型
  • 统计多家机构的营业额
  • 统计多家机构的营业额平均值
echo 'a, 1, 10
a, 2, 20
a, 3, 30
b, 1, 5
b, 2, 6
b, 3, 7' | awk '{data[$1]+=$3}
END{for(k in data) print k,data[k]}'
a, 60
b, 18echo 'a, 1, 10
a, 2, 20
a, 3, 30
b, 1, 5
b, 2, 6
b, 3, 7' | awk '{data[$1]+=$3;count[$1]+=1;}
END{for(k in data) print k,data[k]/count[k]}'
a, 20
b, 6

三、Linux三剑客之sed

1、 sed 基本语法与常用参数

  • 语法结构 sed [addr]X[options]
  • -e 表达式
  • sed -n ‘2p’ 打印第二行
  • sed ‘s#hello#world#’ 修改
  • -i 直接修改源文件
  • -E 扩展表达式
  • –debug 调试

2、 sed pattern 表达式

  • 行数与行数范围 20 30,35
  • 正则匹配 /pattern/
  • 区间匹配 //,//

3、 sed action 表达式

  • p 打印,通畅结合-n 参数:sed -n ‘2p’
  • s 查找替换:s/REGEXP/REPLACEMENT/[FLAGS]
  • d 删除,删除前两行 sed ‘1,2d’
  • a 追加
  • c 改变
  • i 插入内容到匹配行之前
  • e 执行命令
  • 分组匹配与字段提取:sed ‘s#([0-9] )|([a-z] )#\1 \2#’

4、 行数操作

  • 打印特定行 sed -n 2p
  • 删除最后一行 sed $d

5、 s 表达式

  • s 表示替换
  • s 后面的追加字符可以为任意字符
  • g 表示全局匹配
  • & 表示匹配内容
echo a:b:c | sed 's/:/123&/'
a123:b:cecho a:b:c | sed 's/:/&123/'
a:123b:cecho a:b:c | sed 's#:#|#g'
a|b|c

6、 反向引用

  • 使用()对数据进行分组
  • 使用\1 \2 反向引用分组
echo 0 1 2 3 4 | sed -E 's#([1-3]) ([1-3]) ([1-3])#\3 \2 \1#'
0 3 2 1 4

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/313419.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[情商-3]:理解男女思维方式、心理诉求、情绪诉求的差别

目录 前言&#xff1a; 一、感性思维 VS 理性思维 1.1 感性思维 VS 理性思维 1.2 情绪 VS 事情本身 1.3 情绪感知 VS 逻辑推理 二、情绪的表达 2.1 表达方式 2.2 表达途径 三、不明说的情绪和倾诉诉求&#xff1a;隐藏在情绪表达方式之下的情绪与情绪诉求 3.0 快乐愉…

常见网络设备及功能详解

网络设备 - 交换机 交换机&#xff1a;距离终端用户最近的设备&#xff0c;用于终端用户接入网络、对数据帧进行交换等。 交换机的功能&#xff1a; 终端设备&#xff08;PC、服务器等&#xff09;的网络接入二层交换&#xff08;Layer 2 Switching&#xff09; 网络设备 - …

思维链COT原理探究

要进行因果分析&#xff0c;需要把思维链中的不同元素拆解开来&#xff0c;然后通过控制变量实验&#xff0c;来研究不同元素对COT效果的影响。以下两篇论文的核心差异就在于: COT的变量拆解&#xff0c;以及控制变量的实验方式。 结合两篇论文的实验结论&#xff0c;可能导致…

如何在Linux系统中安装Redis

原本Redis官网提供了Windows和Linux两个版本&#xff0c;但从 2011-12-29 以后不再更新Windows版本&#xff08;https://github.com/dmajkic/redis/downloads&#xff09;&#xff0c;加之企业生产环境通常使用Linux系统&#xff0c;所以这里在Linux系统中演示如何安装Redis。 …

十八、任务通知

1、前言 (1)所谓“任务通知”&#xff0c;可以反过来读"通知任务"。我们使用队列、信号量、事件组等等方法时&#xff0c;并不知道对方是谁。使用任务通知时&#xff0c;可以明确指定&#xff1a;通知哪个任务。 (2)使用队列、信号量、事件组时&#xff0c;我们都需…

Pycharm引用其他文件夹的py

Pycharm引用其他文件夹的py 方式1&#xff1a;包名设置为Sources ROOT 起包名的时候&#xff0c;需要在该文件夹上&#xff1a;右键 --> Mark Directory as --> Sources ROOT 标记目录为源码目录&#xff0c;就可以了。 再引用就可以了 import common from aoeweb impo…

Select工作原理

I/O多路复用是一种并发处理的机制&#xff0c;允许一个进程通过一种机制监视多个描述符&#xff0c;从而在有多个I/O操作需要处理时选择其中之一进行服务。select 函数是一种常见的实现 I/O 多路复用的系统调用&#xff0c;它允许一个进程同时监视多个文件描述符的可读性、可写…

医院安全(不良)事件报告系统源码 支持二次开发、支持源码交付

医疗不良事件报告系统源码旨在建立全面的、统一的医疗不良事件标准分类系统和患者安全术语&#xff0c;使不良事件上报管理更加标准化和科学化。通过借鉴国内外医疗不良事件报告系统的先进经验&#xff0c;根据医疗不良事件的事件类型、处理事件的不同部门&#xff0c;灵活设置…

vu3-14

第一个需求是在用户登录成功之后&#xff0c;在主页显示用户的真实姓名和性别&#xff0c;这些信息要调用后端API获取数据库里面的信息&#xff0c;第二个需求是点击菜单1&#xff0c;在表单中修改用户信息之后&#xff0c;更新到后端数据库&#xff0c;然后在主页同步更新用户…

27、web攻防——通用漏洞SQL注入Tamper脚本Base64Jsonmd5

文章目录 数字型&#xff1a;0-9。http;//localhost:8081/blog/news.php?id1 字符型&#xff1a;a-z、中文&#xff0c;需要闭合符号。http;//localhost:8081/blog/news.php?idsimple 搜索型&#xff1a;在字符型的基础上加入了通配符%。http;//localhost:8081/blog/news.…

详解Vue3中的事件监听方式

本文主要介绍Vue3中的事件监听方式。 目录 一、v-on指令二、使用符号简写三、事件修饰符四、动态事件名五、常见的监听事件六、自定义事件 在Vue3中&#xff0c;事件监听的方式与Vue2有一些不同。 下面是Vue3中事件监听方式的详细介绍&#xff1a; 一、v-on指令 Vue3中仍然使…

Linux驱动学习—ioctl接口

1、unlock_ioctl和ioctl有什么区别&#xff1f; kernel 2.6.36 中已经完全删除了struct file_operations 中的ioctl 函数指针&#xff0c;取而代之的是unlocked_ioctl 。ioctl是老的内核版本中的驱动API&#xff0c;unlock_ioctl是当下常用的驱动API。unlocked_ioctl 实际上取…