返回
极客的瑞士军刀:精解 sort、uniq、tr、cut、split、eval 命令
见解分享
2024-01-06 15:14:44
对于 Linux 爱好者和脚本编写者来说,sort、uniq、tr、cut、split 和 eval 命令就像一把多功能瑞士军刀,提供了强大的文本处理能力。从对数据排序和筛选到转换和拆分,这些命令在各种场景下都不可或缺。
sort 命令
sort 命令按照指定规则对文本行进行排序。
语法格式
sort [选项] [文件]
常用选项
选项 | 说明 |
---|---|
-n | 按照数字进行排序 |
-r | 反向排序 |
-u | 等同于 uniq,表示相同的数据仅显示一行 |
-t | 指定字段分隔符,默认使用[TAB]键分 |
uniq 命令
uniq 命令过滤重复行,只保留文本文件中唯一的一行。
语法格式
uniq [选项] [文件]
常用选项
选项 | 说明 |
---|---|
-c | 显示每行出现的次数 |
-d | 仅显示重复行 |
-u | 仅显示唯一行,等同于 sort -u |
tr 命令
tr 命令将文本中的一个字符或一组字符替换为另一个字符或一组字符。
语法格式
tr [选项] [删除集] [替换集] [文件]
cut 命令
cut 命令从文本行中提取指定列。
语法格式
cut [选项] [字段列表] [文件]
常用选项
选项 | 说明 |
---|---|
-d | 指定字段分隔符,默认使用[TAB]键分 |
-f | 指定要提取的字段 |
-c | 按字符位置提取字段 |
split 命令
split 命令将一个大文件拆分成更小的文件。
语法格式
split [选项] [文件] [输出文件前缀] [大小]
常用选项
选项 | 说明 |
---|---|
-b | 按字节拆分 |
-l | 按行拆分 |
-C | 按字符拆分 |
eval 命令
eval 命令执行命令或表达式,并将结果作为命令行参数进行处理。
语法格式
eval [命令或表达式]
常用选项
选项 | 说明 |
---|---|
-p | 打印命令或表达式的结果,而不执行它 |
实例
下面是一个使用 sort、uniq、tr、cut、split 和 eval 命令的示例脚本,用于从日志文件中提取唯一 IP 地址并按数量降序排序:
#!/bin/bash
# 提取 IP 地址
grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' access.log |
# 去重 IP 地址
sort | uniq -c |
# 降序排序
sort -rn |
# 提取 IP 地址
cut -d ' ' -f 2 |
# 每行只显示 IP 地址
tr -s ' ' |
# 将结果保存到文件中
eval "cat > unique_ips.txt"
总结
sort、uniq、tr、cut、split 和 eval 命令是 Linux 环境下强大的文本处理工具。掌握这些命令可以让您高效地处理各种文本数据,从排序和筛选到转换和拆分。这些命令是自动化任务和编写复杂脚本的利器,为 Linux 用户提供了广泛的文本操作可能性。