sort;uniq;tr命令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一.sort命令

sort - - 以行为单位,对文件内容进行排序,也可以根据不通的数据类型来排序
比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出

语法格式:
♦ sort [选项] 参数
♦ cat file | sort 选项
常用选项:

-n按照数字进行排序
-r反向排序
-u等同于uniq,表示相同的数据仅显示一行
-t指定字段分隔符,默认使用[Tab]键分隔
-k指定排序字段
-o<输出文件>:将排序后的结果转存至指定文件
-f忽略大小写
-b忽略每行前面的空格

示例1:sort

仅使用sort命令的情况下,如下图,图1看到2.txt文件内有若干无序的数字
使用sort 2.txt不加任何选项后,数字由首字母进行了排序,而不是按照数字大小的排序
在这里插入图片描述

示例2:sort -n

使用sort -n选项对上图1的数字进行排序后,数字按大小顺序进行了排列
在这里插入图片描述

示例3:sort -r

使用sort -r选项对图1的数字进行排序后,数字呈现反向的排序,如图3所示
同时可以组合两个选项sort -nr,此时数字反向切顺序排列
在这里插入图片描述

示例4:sort -u

使用sort -u选项对图4进行排序后,他会将重复的内容进行合并,合并成一行
在这里插入图片描述

示例5:sort -t,sort -k

使用sort -t表示以什么为分隔符,这里我们是以冒号为分隔符,所以是sort -t ‘:’
使用sort -k表示以第几个字段排列,可以看到,以冒号为分隔符,root是第一个字段,x是第二个字段,0是第三个字段,
所以当我们执行命令后可以看到,第三个字段按照数字的顺序进行了排列
在这里插入图片描述

示例6:sort -o

首先用du -a查看当前目录下所有的文件的大小,通过管道符交由sort查看,使用sort -nr按照由大到小的顺序对文件进行排列,紧接着-o将该排序的文件另存到/root/123/12.txt
可以看到第一列从大到小依次排列开
在这里插入图片描述

二.uniq命令

uniq - - 用于报告或者忽略文件中的重复行,常与sort命令结合使用
语法格式:
uniq [选项] 参数
cat file | uniq 选项
常用选项:

-c进行计数,并删除文件中重复出现的行
-d仅显示连续的重复行
-u仅显示出现一次的行

示例1:uniq

uniq uniq.txt
仅使用uniq命令的时候,他只会删除连续重复的行,而非连续重复的行不会被删除

在这里插入图片描述

示例2:uniq -c

uniq -c uniq.txt
他会去显示重复出现的行的出现次数,并且会删除掉重复的行

在这里插入图片描述
扩展:
以上可以统计出非连续重复行下数字出现的次数,如果想要统计所有的数字出现的次数

sort -n  uniq.txt | uniq -c 先使用sort -n对数字进行排序,再使用uniq -c去重并显示重复系次数
cat uniq.txt |sort -n |uniq -c  同上面的效果是一样的

在这里插入图片描述

示例3:uniq -u

uniq -u uniq.txt  仅显示非连续出现的1次的重复行
cat uniq.txt |sort -n |uniq -u  这样无论是否连续都仅显示出现过一次的数字

在这里插入图片描述
在这里插入图片描述

示例4:uniq -d

uniq -d uniq.txt   仅显示连续出现的重复行

在这里插入图片描述

二.tr命令

tr - - 常用来对来自标准输入的字符进行替换、压缩和删除
语法格式:
tr [选项] [参数]
常用选项

-c保留字符集1的字符,其他的字符(包括换行符\n)用字符集2替换
-d删除所有属于字符集1的字符
-s将重复出现的字符串压缩为一个字符串;用字符集2替换字符集1
-t字符集2替换字符集1,不加选项同结果。

参数:
字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字
符集2":
字符集2:指定要转换成的目标字符集。

示例1: tr

[root@localhost ~]# echo abc
abc
[root@localhost ~]# echo abc | tr 'a-z' 'A-Z'
ABC
将小写的abc转换成大写ABC(如图1)
[root@localhost ~]# echo abc | tr 'a' 'A'
Abc
仅将小写的a替换为大写的A(如图2)

在这里插入图片描述
在这里插入图片描述

示例2: tr -t

[root@localhost ~]# echo abc | tr -t 'b' 'B'
aBc
tr -t的效果同tr不加-t也可以正常执行替换效果

在这里插入图片描述

示例3: tr -c

[root@localhost ~]# echo -e "abc\ncba\nabab"(先用echo输出abc,cba,abab)
abc
cba
abab
[root@localhost ~]# echo -e "abc\ncba\nabab" | tr -c "ab\n" "0"
ab0                                (然后用tr -c将除了ab和换行符其余的都替换成0)
0ba
abab
[root@localhost ~]#

在这里插入图片描述

echo -e "abc\ncba\ndbdb"| tr -c "ab" "0"
ab000ba00b0b0
echo -n
echo -e "XXXXXXX\c"
除了以上两种方式输出的内容结尾不会携带换行符,echo其它输出方法都会在内容结尾默认携带一个换行符\n
换行
echo"" 换行

在这里插入图片描述


k1++; } else if (board[i+k][j+k] == -turn || k1 == 0) { if (k1 > 0) { k2++; } k1 = 0; } if (k1 ==Bash管道(pipe)命令是将多个命令通过管道符(|)连接在一起,使得前一个 6) { value += 10000; } else if (k1 > 0 && i+k > 0 && i命令的输出成为下一个命令的输入,以此类推,形成一个流水线。下面是常+k < ROWS - 1 && j+k > 0 && j+k < COLS - 1 && board[i+k-1用的一些命令: 1. cut:用于剪切文本文件中的字段,可以按列或字符位置进行][j+k-1] == 0 && board[i+k+1][j+k+1] == 0) { value +=剪切。 示例: ``` cut -d',' -f1 file.csv # 按逗号分隔,提取第一 100; // 可以成五 } else if (k1 > 0 && i+k > 0 && i+k <列 cut -c1-5 file.txt # 提取文本文件的前5个字符 ``` 2. grep: ROWS - 1 && j+k > 0 && board[i+k-1][j+k-1] == 0) { value += 10; // 可以成四 } else if (k1 > 0 && i+k < ROWS - 用于按照指定的模式搜索文本文件中的内容,并将匹配的行输出。 示例: ``` 1 && j+k < COLS - 1 && board[i+k+1][j+k+1] == 0) { valuegrep 'pattern' file.txt # 搜索文本文件中包含pattern的行 grep -v 'pattern' file.txt # += 10; // 可以成四 } else if (k1 > 0 && i+k > 1 && j+k 搜索文本文件中不包含pattern的行 ``` 3. sort:用于对文本文件的行进行排序。 > 1 && board[i+k-1][j+k-1] == turn && board[i+k-2][j+k-2]示例: ``` sort file.txt # 按照字典序升序排序 sort -n file.txt # 按照数字 == 0) { value += 5; // 可以成三 } else if (k1 > 0 && i大小升序排序 ``` 4. wc:用于统计文本文件中的行数、单词数和字符数+k < ROWS - 2 && j+k < COLS - 2 && board[i+k+1][j+k+1] ==。 示例: ``` wc -l file.txt # 统计文本文件的行数 wc -w file.txt # turn && board[i+k+2][j+k+2] == 0) { value += 5; // 可以成三 统计文本文件的单词数 wc -c file.txt # 统计文本文件的字符数 ``` 5 } } if (k1 > 0) { k2++; } if (k2 > . uniq:用于去除文本文件中的重复行。 示例: ``` sort file.txt | uniq # 将0) { value += k2 * k2; // 连子数越多,价值越高 } k1文本文件排序并去重 ``` 6. tee:用于将命令的输出同时输出到屏幕和文件中 = 0; k2 = 0; } } // 左下到右上 for (int i =。 示例: ``` ls -l | tee file.txt # 将ls命令的输出同时输出到屏幕和文件中 5; i < ROWS; i++) { for (int j = 0; j < COLS - 5; j ``` 7. tr:用于对文本文件进行字符转换。 示例: ``` tr 'a-z' '++) { for (int k = 0; k < 6; k++) { if (board[i-k][j+k]A-Z' file.txt # 将文本文件中的小写字母转换为大写字母 ``` 8. == turn) { k1++; } else if (board[i-k][j+k] == -turn || k1 == 0) { if (k1 > 0) { k2++; } k1 = 0; } col:用于过滤文本文件中的控制字符。 示例: ``` col -b file.txt # 过滤 if (k1 == 6) { value += 10000; } else if (k1 > 0 && i-k文本文件中的控制字符 ``` 9. join:用于将两个文本文件中的相同字段进行 > 0 && i-k < ROWS - 1 && j+k > 0 && j+k < COLS - 1 && 合并。 示例: ``` join file1.txt file2.txt # 将file1.txt和file2.txt中相同的 board[i-k-1][j+k+1] == 0 && board[i-k+1][j+k-1] == 0字段合并 ``` 10. paste:用于将两个文本文件的对应行合并成一行。 示) { value += 100; // 可以成五 } else if (k1 > 0 && i-k < ROW例: ``` paste file1.txt file2.txt # 将file1.txt和file2.txt的对应行合并成一S - 1 && j+k > 0 && j+k < COLS - 1 && board[i-k+1][j+k行 ``` 11. expand:用于将文本文件中的制表符转换为空格。 示例: ``` expand file.txt # 将文本文件中的制表符转换为空格 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值