目录
一、排序命令—sort
基本语法
常用选项
二、去重命令—uniq
基本语法
常用选项
三、替换命令—tr
基本语法:
常用选项
四、裁剪命令—cut
基本语法:
常用选项
字符串分片
五、拆分命令—split
基本语法:
六、 文件合并命令—paste
基本语法:
常用选项
常用命令
七、扫描命令—eval
实操
一、排序命令—sort
以行为单位,对文件的内容进行排序
基本语法
格式: sort [选项] 参数
常用选项
-n | 按照数组进行排序 |
-r | 反向排序 |
-u | 排序后去重 |
-t | '字段分隔符' |
-k | 字段序号 |
-o<输出文件> | 另保存输出排序的结果(相当于重定向输出) |
-f | 忽略大小写,把小写字母也当作大写字母看待 |
-b | 忽略每行前面的空格 |
实操
sort -n #根据数字大小排序
sort -n -r #原本的排序变成倒序排序
sort -u #去重
sort -o
cat /etc/passwd|sort -o abc.txt #通过管道符号将查找到的内容进行输出保存
cat abc.txt
二、去重命令—uniq
uniq命令用于报告或者忽略文件中连续的重复行,常与sort命令结合使用
基本语法
格式:
uniq [选项] 参数
cat 文件| uniq 选项
常用选项
-c | 对连续的重复行进行去重,并统计重复次数 |
-u | 仅输出不连续重复的行 |
-d | 仅输出连续重复的行 |
实操
uniq -c #重复的行计数并去重
uniq -u #显示仅出现一次的行(包括不连续的重复行)
uniq -d #仅显示重复的数字
三、替换命令—tr
常用来对来自标准输入的字符进行替换,压缩,和删除
基本语法:
格式: cat 文件| tr [选项] 参数
常用选项
-c | 仅保留 参数1 的字符,其它字符(包括\n)都替换成 参数2 的字符 |
-d | 删除所有 参数1 的字符 |
-s | 根据 参数1 进行去重,如果有 参数2 则再用 参数2 的字符替换 参数1 的字符 |
-t | tr命令的默认选项,使用 参数2 的字符替换成 参数1 的字符 |
tr-c
将输入的字符串 "abc" 中不包含字符 "ab" 的部分替换为字符 "a",而包含字符 "ab" 的部分保持不变
tr-c
删除输入字符串中的字符 "a" 和 "b"
tr -s
对文件 "11.txt" 中的内容按照数字进行排序,并且将重复的换行符压缩为一个换行符
tr -t #与默认效果相同
用于windows的编写的脚本格式转换为Linux格
Windows的另起一行格式(\r\n)转换成 Linux的另起一行格式(\n)
cat 文件 | tr -d '\r' > 新文件
四、裁剪命令—cut
对字段进行截取和剪裁
基本语法:
cut [选项] 参数
cat file | cut [选项] 参数
常用选项
-d '分隔符' -f 字段序号 | 根据 -d 指定的分隔符的截取显示 -f 指定的字段 |
--complement | 取反,不显示 -f 指定的字段 |
--output-delimiter '分隔符' | 指定输出的字段分隔符 |
字符串分片
echo ${变量:下标:长度} ; #下标起始从0开始
echo $变量 | cut -b 起始下标-终止下标 #下标起始从1开始
expr substr $变量 起始下标 长度 #下标起始从1开始
五、拆分命令—split
- 用于在Linux下将大文件拆分为若干小文件
-
-l 指定行数分割文件 -b 指定文件的大小分割文件
基本语法:
split 选项 参数 原始文件 拆分后文件名前缀
六、 文件合并命令—paste
按照字段来进行文件的合并
基本语法:
paste [选项] 文件1 文件2
常用选项
-d '分隔符' | 指定输出的字段分隔符 |
-s | 将每个列横向输出 |
常用命令
cat 文件1 文件2 ... > 新文件 #合并文件的行
paste -d '分隔符' 文件1 文件2 ... > 新文件 #合并文件的列
[root@localhost ~]# cat a b
1
3
4
5
6
7
11
12
q
a
z
w
s
x
e
c
[root@localhost ~]# paste a b
1 q
3 a
4 z
5 w
6 s
7 x
11 e
12 c
七、扫描命令—eval
- 在命令行执行前,先将命令行里的变量置换成对应的值后,再执行命令
实操
[root@localhost ~]# vim 1.sh
[root@localhost ~]# chmod +x 1.sh
[root@localhost ~]# bash 1.sh
33
66
[root@localhost ~]# vim 1.sh
#!/bin/bash
a=33
b=a
eval echo \$$b #普通echo输出的变量b的值为
eval $b=66 #经过eval扫描输出变量b的值
echo $a #输出变量a