测试效率加倍提升!shell 高阶命令快来 get 下!

背景

目前大部分的项目都是部署在Linux系统上,作为测试,掌握常用Linux命令是必须的技能。很多的工作了好几年的测试人员可能还只会简单的ls、cd、cat等等这些命令,这些命令是可以应付工作的大部分场景。但是真正要提升测试效率、提高自己的核心竞争力,这些还是远远不足的。在测试工作中很多情况下我们需要同文本文件打交道,如分析/统计日志、自动化部署等等,今天给大家介绍几个很实用的高阶文本处理命令。

cut

此命令的主要作用是来选取一段内容中我们想要获取的,通常选择信息是针对与“行”来分析的,擅长处理“以一个字符间隔”的文本内容。
语法格式:

$ cut -c 字符区间
$ cut -d “分隔字符” -f fields  
参数说明
-c以字符为单位进行分割
-d自定义分隔符,默认为制表符
-f与-d一起使用,指定显示哪个区域

示例:
新建练习文件,内容如下

[root@localhost shellTest]# cat test.txt 
01 nick 20
02 rose 25
03 jack 30
04 tom 27

1、显示每行第四个字符之后的内容

[root@localhost shellTest]# cut -c 4- test.txt 
nick 20
rose 25
jack 30
tom 27
#说明:
# 4- 表示从第4个字符开始
# 4-10 表示从第4个字符到第10个字符
# -4 表示截取前4个字符

2、以“空白字符”作为分隔符,显示第二列内容:

[root@localhost shellTest]# cut -d " " -f 2 test.txt 
nick
rose
jack
tom

sort

将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按照ASCII码值进行比较,最后将他们按升序输出。
语法格式:

$ sort [-nrtk] [file]  
参数说明
-n纯数字进行排序,默认是以文字形态来进行排序的
-r反向排序
-t分隔符,默认是以tab键来分隔
-k以那个区间来进行排序

示例:
还是依据上述的test.txt文件
1、以空白字符作为分隔符,将第二列内容进行升序排列

[root@localhost shellTest]# sort -t " " -k 2 test.txt
03 jack 30
01 nick 20
02 rose 25
04 tom 27

2、以空白字符作为分隔符,将第三列年龄字段进行降序序排列

[root@localhost shellTest]# sort -t " " -k 3 -nr test.txt
03 jack 30
04 tom 27
02 rose 25
01 nick 20
# 说明:
# 年龄字段是数字类型,所以需要加参数n
# 默认sort是升序排列,加参数r实现降序排列

uniq

过滤文件中重复部分,经常结合sort一起使用(重复数据相邻的)
语法格式:

$ uniq [-icu]
参数说明
-i忽略大小写字符的不同
-c文本行出现的次数
-u只显示不重复的行

示例:
新建文本文件如下

[root@localhost shellTest]# cat test2.txt 
01 nick 20
02 tom  25
03 jack 30
04 rose 25
03 jack 30

1、去除姓名重复的数据
结合sort排序和uniq去重(去重的前提是要重复的数据相邻)

[root@localhost shellTest]# sort test2.txt | uniq
01 nick 20
02 tom  25
03 jack 30
04 rose 25

2、统计每行出现的次数

[root@localhost shellTest]# sort test2.txt | uniq -c
      1 01 nick 20
      1 02 tom  25
      2 03 jack 30
      1 04 rose 25

wc

统计文件里面有多少行,多少单词,多少字符
语法格式:

$ wc [-lwm]
参数说明
-l仅列出行数
-w仅列出多少字(英文单词)
-m多少字符

示例:
还是以test2.txt文件举例
1、统计文件中的行数

[root@localhost shellTest]# wc -l test2.txt
5 test2.txt

2、统计有多少个字符

[root@localhost shellTest]# wc -m test2.txt
55 test2.txt

综合示例

上面的demo介绍了这几个命令的基本用法,接下来我们尝试写一个实战例子
域名的信息如下所示,要求:将域名取出并进行计数,按照域名出现的次数进行降序排列

[hhy@localhost shellTest]$ cat domain.txt 
http://www.lemfix.com/index.html
http://www.lemfix.org/1.html
http://post.lemfix.org/index.html
http://mp3.lemfix.org/index.html
http://www.lemfix.org/3.html
http://post.lemfix.org/2.html

步骤分解:
1、先分离出来域名

[hhy@localhost shellTest]$ cut -d "/" -f 3 domain.txt 
www.lemfix.com
www.lemfix.org
post.lemfix.org
mp3.lemfix.org
www.lemfix.org
post.lemfix.org

2、再进行比较排序

[hhy@localhost shellTest]$ cut -d "/" -f 3 domain.txt | sort 
mp3.lemfix.org
post.lemfix.org
post.lemfix.org
www.lemfix.com
www.lemfix.org
www.lemfix.org

3、统计每行的出现次数

[hhy@localhost shellTest]$ cut -d "/" -f 3 domain.txt | sort | uniq -c 
      1 mp3.lemfix.org
      2 post.lemfix.org
      1 www.lemfix.com
      2 www.lemfix.org

4、根据第一列字段(数字)进行降序排列

[hhy@localhost shellTest]$ cut -d "/" -f 3 domain.txt | sort | uniq -c | sort -k 1 -nr
      2 www.lemfix.org
      2 post.lemfix.org
      1 www.lemfix.com
      1 mp3.lemfix.org

转载于:https://www.cnblogs.com/yyoba/p/11535743.html

JavaScript高阶函数的重构可以通过以下几个步骤来完成: 1. 抽象出通用的功能:首先,确定哪些功能是可以被抽象出来的,以便可以在不同的场景中重复使用。这可能涉及到对数组的遍历、过滤、映射、排序等操作。 2. 定义一个高阶函数:使用函数来接收其他函数作为参数或者返回一个函数。高阶函数可以将通用的功能与具体的业务逻辑分离开来,使代码更具可读性和可维护性。 3. 使用函数作为参数:将原始的代码中需要重复的部分抽象出来,并将其作为参数传递给高阶函数。这样可以在不同的场景中重复使用该功能。 4. 返回一个函数:有时候,高阶函数需要返回一个函数,以便在调用时可以提供更灵活的定制选项。返回的函数可以根据具体的需求进行定制,从而实现更加灵活的功能。 5. 测试和验证:确保重构后的高阶函数在各种场景下都能正常工作。编写测试用例,验证函数的正确性和可靠性。 举个例子,假设有一个需要对数组中的元素进行加倍的函数: ```javascript function doubleArray(arr) { return arr.map((item) => item * 2); } ``` 可以将其重构为一个高阶函数: ```javascript function mapArray(arr, callback) { return arr.map(callback); } function double(num) { return num * 2; } const doubledArray = mapArray([1, 2, 3, 4], double); console.log(doubledArray); // 输出 [2, 4, 6, 8] ``` 通过将功能抽象出来,我们可以在不同的场景中重复使用 `mapArray` 函数,并将具体的操作逻辑作为参数传递进去,实现更灵活的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值