13 文件管理之字符处理 sort uniq cut tr wc

426次阅读
没有评论

共计 2125 个字符,预计需要花费 6 分钟才能阅读完成。

引入

1. 文件系统

文件系统是操作系统操作计算机硬盘的应用程序

2. 文件

文件是文件系统提供给用户操作硬盘的一种功能

3. 字符处理

  • sort : 排序文本, 默认对整列有效
  • wc : 统计文件行数, 字节, 字符数
  • uniq : 取出重复行
  • cut : 把文本切分类似于 awk

  • sed : 流式编辑器, 现规定好规则, 一次只处理一行内容

  • awk : 用于格式化处理文件, 处理有规律的文件
  • grep : 强大的文本搜索工具 (文件过滤)

一. 排序: sort

1. 应用场景

在有些情况下, 需要对一个无序的文本文件进行数据的排序操作, 这时候就要用到 sort

2. 常用选项

选项 作用
-t 指定分隔符, 默认以空格为分隔符
-k 指定某列来进行排序
-n 依照数值大小排序, 而不是以字符串方式
-r 倒序

3. 应用示例

🌟默认排序: 以第一个字符作比较, 也可以说对应的是 ASCLL 表上对应的数字的比较, 默认升序
[root@shawn ~]# cat a.txt 
c:2
d:444
a:5
e:1
f:11
[root@shawn ~]# sort a.txt
a:5
c:2
d:444
e:1
f:11

🌟"-t:","-k2": 以 ":" 做分隔符, 对比第二个字符(默认一个一个字符做比较)
[root@shawn ~]# sort -t: -k2 a.txt
e:1
f:11
c:2
d:444
a:5

🌟"-n": 依照数值大小排序, 而不是以字符串方式一个一个对比
[root@shawn ~]# sort -t: -k2 -n a.txt
e:1
c:2
a:5
f:11
d:444

🌟"-r": 倒序排列
[root@shawn ~]# sort -t: -k2 -n -r a.txt
d:444
f:11
a:5
c:2
e:1

二. 去重: uniq

1. 应用场景

用于检查及删除文本文件中重复出现的行列, 一般与 sort 命令结合使用

2. 常用选项

选项 作用
-c 在每列的旁边显示出现的次数
-d 仅显示重复出现的行列
-u 仅显示出现一次的行列

3. 应用示例

🌟与 "sort" 配合去重
[root@shawn ~]# cat a.txt 
song
123
shawn
123
shawn
xing
[root@shawn ~]# sort a.txt 
123
123
shawn
shawn
song
xing
[root@shawn ~]# sort a.txt | uniq
123
shawn
song
xing

🌟"-c": 显示重复次数
[root@shawn ~]# sort a.txt | uniq -c
      2 123
      2 shawn
      1 song
      1 xing

🌟"-d": 仅显示重复出现的行列
[root@shawn ~]# sort a.txt | uniq -d
123
shawn

🌟"-u"; 仅显示出现一次的行列
[root@shawn ~]# sort a.txt | uniq -u
song
xing

三. 截取字段: cut

1. 应用场景

用来截取显示行中的指定部分, 与 awk 类似

2. 常用选项

选项 作用
-d 指定字段的分隔符, 默认字段分隔符为 "tab"
-f 显示指定的内容

3. 应用示例

🌟以分隔符 ":" 分隔字符, 截取 "1-4" 段
[root@shawn ~]# cat a.txt 
root:x:0:0:root:/root:/bin/bash
[root@shawn ~]# cut -d ":" -f1-4 a.txt 
root:x:0:0

🌟以分隔符 ":" 分隔字符, 截取 "1,3,6,7" 段
[root@shawn ~]# cut -d ":" -f1,3,6,7 a.txt 
root:0:/root:/bin/bash

四.tr 命令

替换或删除

1. 参数

"-d" : 删除
tr "xxx" "XXX" : 替换

2. 应用示例

🌟替换
[root@shawn ~]# cat a.txt 
root:x:0:0:root:/root:/bin/bash
[root@shawn ~]# cat a.txt | tr "root" "ROOT"
ROOT:x:0:0:ROOT:/ROOT:/bin/bash

🌟"-d" : 删除
[root@shawn ~]# cat a.txt | tr -d "root"
:x:0:0::/:/bin/bash

🌟对字符进行替换, 是每个字符都替换, 而不是匹配一整个单词替换
[root@shawn ~]# echo "Hello Songhaixing 123" > a.txt 
[root@shawn ~]# cat a.txt 
Hello Songhaixing 123
[root@shawn ~]# tr "Song" "sONG" < a.txt 
HellO sONGhaixiNG 123

五.WC 命令

统计数字

1. 常用选项

选项 作用
-c 统计文件的 Bytes
-l 统计文件的行数
-w 统计文件的单词数, 默认以空白字符为分隔符

2. 应用示例

🌟"-c": 查看大小
[root@shawn ~]# cat a.txt 
Hello Songhaixing 123
hello nihao
[root@shawn ~]# ll a.txt 
-rw-r--r-- 1 root root 34 10 月 27 22:12 a.txt
[root@shawn ~]# wc -c a.txt 
34 a.txt

🌟"-l": 查看行数
[root@shawn ~]# wc -l a.txt
2 a.txt

🌟"-w": 统计单词个数
[root@shawn ~]# wc -w a.txt 
5 a.txt

六. 文件处理之三剑客

https://www.cnblogs.com/songhaixing/p/13866686.html

正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-16发表,共计2125字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)