Shell 脚本-管道命令(sort、uniq、tr、cut、eval)

常见的管道命令

 sort命令

  • Linux sort命令用于将文本文件内容加以排序
  • sort命令可针对文本文件的内容以行为单位来排序
1 sort [选项]  参数

 常用选项

1 -f∶ 忽略大小写,会将小写字母都转换为大写字母来进行比较;
2 -b∶ 忽略每行前面的空格3 -n∶ 按照数字进行排序4 -r∶ 反向排序5 -u∶ 等同于uniq,表示相同的数据仅显示一行6 -t∶ 指定字段分隔符,默认使用 【Tab】键分隔;
7 -k∶ 指定排序字段8 -o <输出文件>∶ 将排序后的结果转存至指定文件;

 uniq命令

  • Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用
  • uniq 可检查文本文件中重复出现的行列
1 uniq [选项]  参数

 常用选项

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

 tr命令

  • Linux tr 命令用于转换或删除文件中的字符
  • tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备

 常用选项和参数

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

 参数

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

 使用tr对数组进行排序

  • 使用echo ${arr[*]}可以输出数组列表
  • 结合 | tr "  "  "\n" 可以将输出内容中的空格换成换行符
  • 然后在使用 | sort  -n对输出的内容进行按数值从小到大排序即可

 cut命令

  Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字
  

  使用说明:

  • cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出
  • 如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一
1 cut [选项]  参数

 常用选项

1 -f∶ 通过指定哪一个字段进行提取。cut命令使用"TAB"作为默认的字段分隔符
2 -d∶ “TAB"是默认的分隔符,使用此选项可以更改为其他的分隔符
3 - -complement∶ 此选项用于排除所指定的字段
4 - -output-delimiter∶ 更改输出内容的分隔符

 eval命令

  命令字前加上eval时,shell会在执行命令之前扫描它两次。eval命令将首先会去扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。

1 [root@localhost ~]# echo "hello world" > file
2 [root@localhost ~]# myfile="cat file"
3 [root@localhost ~]# echo $myfile
4 cat file
5 [root@localhost ~]# eval $myfile
6 hello world
1 [root@localhost ~]# vim test.sh
2     ```
3     #!/bin/bash
4     
5     eval echo \$$#
6     ```
7 [root@localhost ~]# ./test.sh 1 3 5 7 9
8 9
1 [root@localhost ~]# a=100
2 [root@localhost ~]# b=a
3 [root@localhost ~]# eval $b=50
4 [root@localhost ~]# echo $a
5 50

 

posted @ 2021-08-04 19:45  梨xyc  阅读(409)  评论(0)    收藏  举报