Linux系列:shell编程之文档操作(1)

举报
数据分析与统计学之美 发表于 2021/09/27 21:04:14 2021/09/27
【摘要】 linux系列第十课

1、wc命令功能:统计文件行数、单词数等功能。

# wc常用选项。后面带了###,表示常用的。
-l:统计多少行 ###
-w:统计字数 ###
-c:统计文件字节数,一个英文字母1字节,一个汉字占2-4字节(根据编码)
-m:统计文件字符数,一个英文字母1字符,一个汉字占1个字符
-L:统计最长行的长度,也可以统计字符串长度 ###
-help:显示帮助信息
-version:显示版本信息

操作如下:

[hadoop@image1 shell]$ cat wc.txt 
aaa    ssss    ttttt
bbbbbb;llll
ffffffffffffffff
gggggggggg

[hadoop@image1 shell]$ wc wc.txt 
 4     6     61  wc.txt
行数 单词数 字节数 文件名

# -l 统计文件有多少行
[hadoop@image1 shell]$ wc -l wc.txt
4 wc.txt
[hadoop@image1 shell]$ cat wc.txt | wc -l
4

# -w 统计文件单词数
[hadoop@image1 shell]$ wc -w wc.txt 
6 wc.txt
[hadoop@image1 shell]$ cat wc.txt | wc -w
6

# -L 统计最长行的长度。空格也算
[hadoop@image1 shell]$ wc -L wc.txt 
20 wc.txt
# -L 还可以统计字符串的长度
[hadoop@image1 shell]$ echo "abc" | wc -L
3

2、sort命令功能:排序(默认把整行作为整体,进行排序)

# 常用选项
-f:忽略字母大小写,就是将小写字母视为大写字母排序
-M:根据月份比较,比如JANDEC
-h:根据易读的单位大小比较,比如2K、1G
-g:按照常规数值排序          
-n:根据字符串数值比较        
-r:倒序(降序)排序  ###
-k:位置1,位置2根据关键字排序,在从第位置1开始,位置2结束  ###
-t:指定分隔符  ###
-u:去除重复行  ###
-o:将结果写入文件

默认把每一行看成一个整体,进行排序。
在这里插入图片描述
将数据按照指定分隔符分割,然后按照分割后的第二列数据,进行排序。
在这里插入图片描述
将数据按照指定分隔符分割,然后按照分割后的第二列数据,进行排序。若分裂后的第二列数据相同,就按照第三列降序。
在这里插入图片描述
删除重复行。既可以去除相邻行的重复,也可以去重不相邻行的重复。与下面的uniq进行对比学习。
在这里插入图片描述

3、uniq命令功能:去重。只能去除相邻行。

# 常用选项
-c:打印出现的次数
-d:只打印重复行。
-u:只打印不重复行。
-D:只打印重复行,并且把所有重复行打印出来
-f N:比较时跳过前N-i:忽略大小写 ###
-s N:比较时跳过前N个字符
-w N:对每行第N个字符以后内容不做比较

操作如下:
在这里插入图片描述
uniq命令结合sort命令的几种用法。
在这里插入图片描述

4、一个简单案例:求两个文件的并集。

原始文件如下:
在这里插入图片描述
操作如下:

[hadoop@image1 shell]$ cat a.txt b.txt | sort -r | uniq > c.txt
[hadoop@image1 shell]$ cat c.txt
g
f
e
d
c
b
a

解释如下:

我们对所查看内容,先试用“sort -r”做一个降序排序,然后使用“uniq”进行去重,
最后使用“>”重定向到c.txt中。
一个“>”代表覆盖原有内容。两个“>>”代表追加在原文件之后。
注意:交集,差集使用uniq中参数一样可以写出来。自己可以下去练练手。

5、cut命令功能:从一个文本文件或者文本流中提取文本列。

常用选项

-d:后面接分隔字符。与 -f 一起使用
-f:依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思
-c:按照字符截取
-b:按照字节截取

操作如下:
在这里插入图片描述
再举一个例子加深印象:

[hadoop@image1 shell]$ cat cut.txt
黄渤 huangbo 18 jiangxi
徐峥 xuzheng 22 hunan
王宝强 wangbaoqiang 44 liujiayao
[hadoop@image1 shell]$ cut -d " " -f 1,3 cut.txt
黄渤 18
徐峥 22
王宝强 44
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。