Loading... ## 1. grep 命令 – 使用条件匹配搜索文本 Grep是处理文本文件的最强大的工具之一。 语法: ```bash grep [options] pattern [files] ``` 一些有用的 grep 选项: - i – 忽略条件中的大小写区别 - R – 递归搜索子目录 - c – 只打印匹配行数 - v – 反转匹配,打印不匹配的行 它搜索与正则表达式匹配的行并打印它们,例如下面命令将搜索 long.txt 文件中的 “linux”一词,忽略大小写敏感性。 ```bash grep -i "linux" long.txt #等同 cat long.txt | grep -i "linux" ``` 您可以使用-c标志计算与给定条件匹配的次数: ```bash grep -c "linux" long.txt 2 ``` **查找record.log中包含AAA,但不包含BBB的记录的总数**: ``` cat record.log | grep AAA | grep -v BBB | wc -l ``` ## 2. awk – 条件扫描和处理语言 awk 命令允许根据指定的条件和操作进行更高级的文本处理。它逐行操作,将每行分割成字段。 语法: ```bash awk 'pattern { action }' input-file ``` 例子: ```bash awk '/error/ {print $1}' /var/log/syslog ``` 这将打印任何包含 “error” 的行的第一个字段。awk 还可以使用 NR (行数)和 NF (字段数)等内置变量。 ```bash [root@xx]# cat linux.txt Linux Linux linux1 linux3 linux6 linux8 Linux9 [root@xx]# awk "/lin/ {print NR}" linux.txt 3 [root@xx]# awk "/lin/ {print NF}" linux.txt 4 ``` awk 高级功能包括: - 字段数学计算 - 条件语句 - 用于处理字符串、数字和日期的内置函数 - 输出格式控制 awk 的功能非常强大,因为它是一种独立的编程语言,作为 Linux 命令,它可以给你很多控制权。详细学习请参考 [Linux awk 命令 | 菜鸟教程](https://www.runoob.com/linux/linux-comm-awk.html) ## 3. sed – 用于过滤和转换文本的流编辑器 sed 命令允许过滤和转换文本。它可以执行搜索/替换、删除、移位等操作。不过,与 awk 不同的是,sed 是为按指令逐行编辑而设计的。 语法: ```bash sed options 'commands' input-file ``` 例子: ```bash sed 's/foo/bar/' file.txt ``` 这会将 file.txt 中的 “foo” 替换为 “bar”。 一些有用的 sed 命令: - s – 搜索和替换文本 - /pattern/d – 删除与模式匹配的行 - 10,20d – 删除第 10-20 行 - 1,3!d – 删除除 1-3 行以外的所有行 ('1,3!d',需单引号,双引号需要反斜杠\转换,因为Bash shell下!字符有特殊意义,被解释为历史命令扩展。) sed 非常适合批量查找/替换、选择性删除行和其他文本流编辑操作。 ```bash sed 's/Linux/linux/' linux.txt > linux.txt2 ``` ## 4. sort – 对文本文件行进行排序 当你处理大量文本或数据,甚至是从其他命令输出的大量内容时,排序是使事情易于管理的好方法。sort 命令将按字母或数字对文本文件的行进行排序。 语法: ```bash sort [options] [file] ``` 有用的 sort 选项: - n – 按数字而不是字母排序 - r – 反转排序顺序 - k – 根据特定字段或列排序 例子: ```bash sort -n grades.txt ``` 这将对 grades.txt 中的内容进行数字排序。排序便于对文件内容进行排序,使输出或分析更具可读性。 sort -k 是 sort 命令的一个选项,用于指定要排序的字段(列)。 语法格式为:sort -k <起始位置>[,<结束位置>] 其中 <起始位置> 指定了要排序的字段起始位置,<结束位置>(可选)指定了字段的结束位置。字段起始位置和结束位置都是以 1 开始的数字。 以下是一些示例来帮助说明 -k 选项的用法: - sort -k 2:按照第二个字段进行排序。 - sort -k 2,5:按照从第二个字段到第五个字段的范围进行排序。 - sort -k 3,3:按照第三个字段进行排序。 - sort -k 2,2n:按照第二个字段的数值大小进行排序。 - sort -k 2,2nr:按照第二个字段的逆序(从大到小)数值大小进行排序。 通过使用 -k 选项,你可以指定要排序的字段范围,还可以使用额外的选项来控制排序方式(如按照数值大小或逆序排序)。 ```bash [root@xx]# cat linux.txt test 30 Hello 95 Linux 85 [root@xx]# sort -k 2 linux.txt test 30 Linux 85 Hello 95 ``` ## 5. uniq – 报告或省略重复行 uniq 命令可从输入中过滤重复的相邻行。该命令通常与排序命令一起使用。 语法: ```bash uniq [options] [input] ``` 选项: - c – 以出现次数作为唯一行的前缀。 - d – 只显示重复行,不显示唯一行。 例子: ```bash sort data.txt | uniq ``` 这将删除排序后 data.txt 中的任何重复行。uniq 可让你控制重复文本的过滤。 ## 6. diff – 逐行比较文件 diff 命令逐行比较两个文件并打印差异。它通常用于显示文件版本之间的变化。语法 语法: ```bash diff [options] file1 file2 ``` 选项: - b – 忽略空白处的更改。 - B – 在行内显示差异,高亮显示更改。 - u – 用三行上下文输出差异。 例子: ```bash diff original.txt updated.txt ``` 这将输出 original.txt 和 updated.txt 之间的不同行。 diff 对于比较文本文件和源代码的修订版本非常有用。 ## 7. wc – 打印行数、字数和字节数 wc (字数统计)命令打印文件中的行数、字数和字节数。 语法: ```bash wc [options] [file] ``` 选项: - l – 只打印行计数。 - w – 只打印字数。 - c – 仅打印字节数。 例子: ```bash wc report.txt ``` 该命令将打印 report.txt 中的行数、字数和字节数。 最后修改:2024 年 07 月 17 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏