一、文件和目录内容检索处理命令
1、uniq去重
语法
uniq [options] [input_file [output_file]]
选项
选项 | 作用 |
---|---|
-c | 进行计数,并删除文件中重复出现的行 |
-d | 仅显示连续的重复行 |
-u | 仅显示出现一次的行 |
-i | 忽略大小写 |
案例
1、删除输入文件中的重复行
sort input.txt | uniq
2、仅显示重复的行
sort input.txt | uniq -d
3、忽略大小写进行比较
sort -i input.txt | uniq -i
4、进行计数,并删除文件中重复出现的行
sort uniq.txt | uniq -c
2、tr转换
语法
tr [options] set1 set2
选项
选项 | 作用 |
---|---|
-c | 保留字符集1的字符,其他的字符用(包括换行符\n)字符集2替换 |
-d | 删除所有属于字符集1(-d 后面的参数)的字符 |
-s | 将重复出现的字符串压缩为一个字符串;用字符集2 替换 字符集1 |
-t | 字符集2 替换 字符集1,不加选项同结果 |
案例
1、将文本中的大写字母转换为小写字母
cat uniq.txt | tr 'A-Z' 'a-z'
2、删除文本中的空格
echo "hello world" | tr -d ' '
3、将文本中的特定字符替换为另一个字符
echo "abc-" | tr 'a-z' 'X-Y'
4、压缩重复字符
echo "foo bar" | tr -s ' '
5、去掉空白符
echo "hello\tworld" | tr -d '[:space:]'
3、cut切割
语法
cut [options] [field-spec]
选项
选项 | 作用 |
---|---|
-f | 通过指定哪一个字段进行提取。cut命令使用“TAB”作为默认的字段分割符 |
-d | “TAB”是默认的分隔符,使用此选项可更改为其他的分隔符 |
-c | 以字符为单位进行分割 |
- -complement | 用于排除所指定的字段 |
- -output-delimiter | 更改输出内容的分隔符 |
-s | 跳过空白字段 |
-b, -B | 仅打印非空白的字段。 |
案例
1、提取指定范围内的字段:(连续)
cut -d ':' -f 1-3 file.txt
2、使用制表符作为分隔符提取字段
cut -d $'\t' -f 1 file.txt
3、提取指定文件中的所有字段(Rocky9中不可用)
cut -d ':' -f * file.txt
4、仅提取非空白字段
cut -b 3 file.txt
5、使用通配符提取多个字段:(可以不连续)
cut -d':' -f 1,2,3 file.txt
6、统计messages(系统)日志每个时间点产生日志的条目数量
cut -d' ' -f 4 messages | cut -d ':' -f 1 | uniq -c
7、统计web站点访问用户数
[root@c2407 nginx]# cat access.log | cut -d " " -f 1 | uniq -c12 192.168.115.125 192.168.115.100
4、which命令
语法
which [command]
选项
选项 | 作用 |
---|---|
-a 或 --all | 打印所有匹配的命令路径,而不仅仅是第一个匹配的。 |
-p 或 --print-path | 除了命令名称外,还打印出完整的路径。 |
-v 或 --version | 打印 which 命令的版本信息。 |
案例
5、whereis命令
语法
whereis [-bms] [-u] [-f] [-h] [-L] [-M] [-S] [-version] [command]
选项
选项 | 作用 |
---|---|
-b 或 --binary | 只查找二进制文件。 |
-m 或 --manual | 只查找手册页。 |
-s 或 --source | 只查找源代码文件。 |
-u 或 --usage | 打印使用说明。 |
-f 或 --follow | 跟随符号链接。 |
-h 或 --help | 打印帮助信息。 |
L 或 --logical | 搜索逻辑路径,不包含物理符号链接。 |
-M 或 --physical | 搜索物理路径,不包含逻辑符号链接。 |
-S 或 --size | 只查找指定大小的文件。 |
6、diff命令
语法
diff [选项] 文件1 文件2
选项
选项 | 作用 |
---|---|
-q 或 --quiet | 只输出文件差异的文件名,不显示详细差异。 |
-c 或 --context | 以语境方式显示差异,默认显示3个字符的上下文。 |
-u 或 --unified | 以统一的方式显示差异,这是默认模式,显示共同的祖先与当前文件之间的差异。 |
-a 或 --text | 比较文本文件,忽略文件的格式差异。 |
-b 或 --ignore-space-change | 忽略空白的差异(空格、制表符等)。 |
-B 或 --ignore-space-at-eol | 忽略每行末尾的空白差异。 |
-i 或 --ignore-case | 忽略大小写差异。 |
-D 或 --horizontal-split | 以水平分割的方式显示差异。 |
-E 或 --sideby-side | 以并排的方式显示差异。 |
-l 或 --from-file | 只显示文件2相对于文件1的差异。 |
-r 或 --recursive | 递归地比较目录。 |
-N 或 --new-file | 当文件2是文件1不存在的文件时,只显示文件2的内容。 |
-x 或 --exclude | 跳过指定模式的文件。 |
-X 或 --exclude-from | 从指定的文件中读取排除模式。 |
--from-file=FILE | 同 -l ,指定比较的基准文件。 |
--horizontalsplit | 同 -D ,以水平分割的方式显示差异。 |
--left-column | 只显示左侧列的差异。 |
--no-dereference | 不解析符号链接。 |
--old-file | 当文件1是文件2不存在的文件时,只显示文件1的内容。 |
--recursive | 同 -r ,递归地比较目录。 |
--right-column | 只显示右侧列的差异。 |
--speed-large-files | 用于大文件,减少内存使用。 |
案例
[root@c2407 opt]# diff /etc/passwd ./passwd
44d43
< nginx:x:988:982:Nginx web server:/var/lib/nginx:/sbin/nologin
比较两个文件的区别差距
二、文件与目录归档压缩命令
1、tar命令
语法
tar [选项] [归档文件名] [-C] [解压路径]
常用组合选项:
归档:tar zcvf
tar jcvf
解压:tar xf -C
查看:tar tvf
选项
选项 | 作用 |
---|---|
-z,--gzip | 用 gzip 对存档压缩 |
-c, --create | 建立新的存档 |
-v, --verbose | 详细显示处理的文件 |
-f, --file | 指定存档文件路径及名称 |
-j, --bzip2 | 通过 bzip2 过滤归档 |
-x, --extract, --get | 从归档中解出文件 |
-C | 指定解压后的存储路径 |
tvf | 仅查看归档包中的文件内容 |
案例
1、归档/root下所有内容
2、查看压缩内容
3、压缩
tar -jcvf lx.tar.bz2 lx.txt
tar -zcvf lx.tar.gz lx.txt
4、解压
解压到当前目录
tar xf opt.tar
解压到其他目录 -C /tmp/
2、zip命令
语法
zip 压缩后的文件名 需要压缩的文件
解压缩命令
unzip 压缩文件名
3、gzip命令
语法
gzip 需要压缩的文件
解压缩命令
gunzip 压缩文件
案例
4、bzip2命令
语法
bzip2 需要压缩的文件
解压缩命令
bunzip2 压缩文件
案例
三、统计命令
1、wc
wc -l 行数
wc -w 单词
wc -c 字符
2、du
du -sh 总容量
su -ah 每个文件的容量及总容量